4 c arrays syntax pointers multidimensional-array
指针和数组彼此密切相关,因此,如果我们有一个二维数组
int a[3][4]={
1,2,3,4,
5,6,7,8,
9,10,11,12};
Run Code Online (Sandbox Code Playgroud)
都
printf("%p\n", a);
Run Code Online (Sandbox Code Playgroud)
和
printf("%p\n", *a);
Run Code Online (Sandbox Code Playgroud)
打印相同的地址.我所理解的可能a是指向awhile 的基地址*a指向二维数组的第一个子数组a.
那么,这两者有什么区别?
我得到的可能是指向一段时间的基地址*a指向二维数组a的第一个子数组.
差不多就是这样.
aint(*)[3]当你传递给它时,它自己衰减到它的第一个子数组的指针(类型)printf.*a指定a的第一个子阵列(类型int[3]),并衰减到int*该子阵列的第一个元素的指针(类型).最后,它们共享相同的值,因为数组具有与其第一个元素相同的地址,递归.