一维数组、二维数组--相关指针的含义

a+1代表  序号为1的行的首地址。
a+2 代表  a[2]的首地址
a[0]代表 一维数组a[0]中第0列元素的地址,即&a[0][0]
a[1]的值是 &a[1][0];
a[2]的值是 &a[2][0];
a[0]+0 是a[0][0]的地址,即 &a[0][0];
a[0]+1 是a[0][1]的地址,即 &a[0][1];
a[i]*(a+i) 等价
a[0]+1*(a+0)+1 都是 &a[0][1]
a[1]+2*(a+1)+2 都是 &a[1][2]
*(a[0]+1)就是a[0][1]的值。
*(*(a+0)+1)*(*a+1) 就是a[0][1]的值
*(*(a+i)+j)*(a[i]+j)就是a[i][j]的值  
note: *(a+i)和a[i]等价

a[i]详解:

① 若a是一维数组名,则a[i]代表a数组序号为i的元素的存储单元;
a[i]是有物理地址的,是占存储单元的。
② 若a是二维数组,则a[i]是一维数组名,它只是一个地址,并不代表某一元素的值(如同一维数组名只是一个指针常量一样)。
如:a, a+i, a[i], *(a+i), *(a+i)+j, a[i]+j 都是地址
而 *(a[i]+j) 和 ((a+i)+j) 是二维数组元素a[i][j]的值。

在这里插入图片描述

–摘自C语言课本,仅为复习笔记

猜你喜欢

转载自blog.csdn.net/xiaoyue_/article/details/115080546