C语言中有个数组,一维数组还好不会有什么问题,二维就有很大问题了,其中,多级指针与“多维”数组更是让很多人云里雾里 。写下此篇,一步一步剖析多维数组。
首先,一维数组都知道:
char a[3];
a:是数组名,会转化为数组的起始地址;
a + n: 表示数组的起始地址偏移 对象的n个长度;
*(a + n): 获取数组的第n个对象的内容;
a[n]: 等价于*(a+n);
&a:获取数组指针的地址,此处为char[3]的指针类型;
&a[0]:获取数组第一个对象的地址,此处为char* 类型;
&a + 1: 偏移一个char[3]的长度的指针;
&a[0] + 1: 偏移一个char*的长度;
那么理解a+1,&a+1,&a[0]+1,sizeof(a),sizeof(&a)应该就不难了吧。
如果理解了上面,尤其是理解数组的成员对象这个概念那么就不难理解多维数组了。
下面来看二维数组:
char a[3][2];
看图片应该理解了吧,这里的对象不再是一个char, 而是一个char [2]的数组
那么如何进入对象里面呢,答案是*;
*(a+n):获取第n个对象, 此时*(a+n)表示第n个对象的首地址,可以把它看成是一个数组名;
*(a + n) + m: 表示数组第n个对象中的第m个对象;
*(*(a + n) + m): 获取数组的第n个对象第m个对象的内容;
&(*(a+n
多维数组与指针
最新推荐文章于 2023-03-08 19:51:59 发布