C语言中二维数组的引用和地址有什么区别吗?比如a[i]地址&a[i],a+i,p+i,引用a[i],*(a+i)(这不应该是地址
C语言中二维数组的引用和地址有什么区别吗?比如a[i]地址&a[i],a+i,p+i,引用a[i],*(a+i)(这不应该是地址吗...
C语言中二维数组的引用和地址有什么区别吗?比如a[i]地址&a[i],a+i,p+i,引用a[i],*(a+i)(这不应该是地址吗
展开
1个回答
展开全部
你这种情况比较复杂!一个数组名本身是一个常量地址,比如数组a[10],a就是该数组在内存分配空间的起始地址。要引用数组中各个元素。a[i]是数组专用的方法,它本身就是指a往后偏移i个长度内存空间里存放的内容,因此用&取地址就变成了该内容对应的地址;也可以用*(a+i),a+i指从地址a偏移i个长度(此长度不是字节,取决于数组存储的元素类型)的地址(注意此时它不是指里面的内容),因此加上*以取到里面的内容。
也就是说a[i]指内容,因此可以用&取其地址;而a+i指地址,因此可以用*取其内容,二者形式不同,都可以一样用。
我是这样理解的,仅供参考。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询