在数组指针中为什么是*(p+1)+2而不是(p+1)+2表示数组a第一行第二列的元素的地址?
2个回答
展开全部
若定义数组
int a[3][4],*p=a[0];
将二维数组看成是一维数组,即 a[3]这个部分为一维数组的数组名,[4]这部分看成为一维数组的元素个数。这样就有数组名为a[0]的一维数组,其元素为a[0][0],a[0][1]……等等。
而*(p+0)就是a[0],且是个地址,代表理解上的一维数组名。*(p+1)也是地址,是a[1],a[1]+2就肯定是地址了,即*(p+1)+2一定是地址,*(*(p+1)+2)是a[1][2]元素。(p+1)+2肯定不是正确表示这一元素的地址了。
int a[3][4],*p=a[0];
将二维数组看成是一维数组,即 a[3]这个部分为一维数组的数组名,[4]这部分看成为一维数组的元素个数。这样就有数组名为a[0]的一维数组,其元素为a[0][0],a[0][1]……等等。
而*(p+0)就是a[0],且是个地址,代表理解上的一维数组名。*(p+1)也是地址,是a[1],a[1]+2就肯定是地址了,即*(p+1)+2一定是地址,*(*(p+1)+2)是a[1][2]元素。(p+1)+2肯定不是正确表示这一元素的地址了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询