如何用指针数组和数组指针来表示二维数组?
今天来给大家分享一道经典的笔试题。
a是一个二维数组,3 行 4 列,一共 12 个元素。
p是个数组,数组里面元素个数不详,每个元素都是整型指针。
那么它应该如何初始化?
首先,既然是数组,初始化一定需要一个大括号,然后里面填上多个整型指针。
int *p[] = {};那在二维数组中,能不能找到int *类型的数据?
a; a[0]; a[0][0]; &a; &a[0]; &a[0][0];数组名肯定不对,它是一个二级地址;
int *p[] = {a[0], a[1], a[2]};分别是第一行、第二行、第三行首元素的地址。
int *p[3] = {a[0], a[1], a[2]};内存模型画出来就是这样的,数组p包含三个指针,每个指针都指针二维数组每行的第一个元素。
int (*q)[] = a;a表示数组第一行的地址,所以q后面的中括号也能顺理成章的写成4,因为一维数组有4个元素。
int (*q)[4] = a;q的含义和a是一样的,表示数组第一行的地址,q加一,就指向数组的下一行。
审核编辑:刘清
全部0条评论
快来发表一下你的评论吧 !