#include <stdio.h>
int main(void)
{
int num[4][2];
num;
num[0];
return 0;
}
让我来探讨一下num与num[0]的区别,根据我的分析,这两个都是代表地址,而我根据num[4][2],来具象化理解一下
这应该是二维数组在空间中的储存模式。
num
num[0]
这两个是存在一点区别,虽然都是储存的第一个元素的地址也就是 num[0][0]的地址,但是两个代表的不太一样
num,num+1,num+2
都是代表两个int 类型大小的地址,也就是代表这一行
num[0],num[1],num[2], 则是代表这一行的首元素的地址,表示一个int 类型大小的地址
不过,&num[0]是和num,相等的。表示这一行,代表一个数组。
一个二维数组可以看成是两个数组,先访问行,再访问列。先进入行数组,再根据行数组中储存的地址进入列数组。列数组中存储的才是数字或元素。
num一个二级指针
先*num,代表解应用,进入这一行数组,再次解应用num,提取这个数组首元素地址上储存的数字,或者看成
((num+0)+0),里面括号代表哪个数组的首元素,括号外则是第几个元素,和num[0][0],是一个意思。
这主要是探讨一下二维数组再内存中的存储模式。
如有错误,请大佬指点。
还有哦。
指针进阶-ONE