C语言中二维数组的引用和地址有什么区别吗?比如a[i]地址&a[i],a+i,p+i,引用a[i],*(a+i)(这不应该是地址

2024-11-01 04:19:10
推荐回答(1个)
回答(1):

你这种情况比较复杂!一个数组名本身是一个常量地址,比如数组a[10],a就是该数组在内存分配空间的起始地址。要引用数组中各个元素。a[i]是数组专用的方法,它本身就是指a往后偏移i个长度内存空间里存放的内容,因此用&取地址就变成了该内容对应的地址;也可以用*(a+i),a+i指从地址a偏移i个长度(此长度不是字节,取决于数组存储的元素类型)的地址(注意此时它不是指里面的内容),因此加上*以取到里面的内容。 也就是说a[i]指内容,因此可以用&取其地址;而a+i指地址,因此可以用*取其内容,二者形式不同,都可以一样用。 我是这样理解的,仅供参考。