二维数组及多维数组的指针总结
2016-11-16 23:49
267 查看
一.二维数组的结构
看下一个二维数组int array[2][3]={{1,2,3},{4,5,6}};的内存存储形式:
二维数组是嵌套定义的 ,这个二维数组就是由两个一维数组array[0]和array[1]组成的,
array[0]:是第一个一维数组的数组名,这个一维数组是{1,2,3};
array[1]:是第二个一维数组的数组名,这个一维数组是{4,5,6};
array[0][0]:是第一个一维数组的数组的第一个元素{1};
array[0][1]:是第一个一维数组的数组的第二个元素{2};
array[0][2]:是第一个一维数组的数组的第三个元素{3};
上面array[0]、array[1]就是这个一位数组的数组名,相当于a[3]={1,2,3}这个数组的a;
array数组的元素类型为: int (*)[3]类型
array[0]数组的元素类型为: int *类型
array[1]数组的元素类型为: int *类型
对于数组int array
;(N是一常量)。数组名array是一指向数组首元素的常量指针(也就是说,不可再指向别的存储单元),而&array是一指向整个数组的指针。所以:
array: 是指向
int (*)[3]类型的指针;//指向组成自己子元素类型的首元素(自己的子元素是一维数组,即指向一维数组类型)
array[0]:是指向int *类型的指针; //指向组成自己子元素类型的首元素(自己的子元素是int型,即指向int型,int *)
array[1]:是指向int *类型的指针; //指向组成自己子元素类型的首元素(自己的子元素是int型,即指向int型,int *)
&array: 是指向 int (*)[2][3]类型的指针;//指向自身数组类型的指针(自身类型是二维数组)
&array[0]:是指向int (*)[3]类型的指针; //指向自身数组类型的指针(自身类型是一维数组)
&array[1]:是指向int (*)[3]类型的指针; //指向自身数组类型的指针(自身类型是一维数组)
同理三维数组:
int Sarray[2][2][3] = {
{ { 1, 2, 3 }, { 4, 5, 6 } },
{ { 7, 8, 9 }, { 3, 6, 8 } }
};
上述三维数组:由两个二维数组组成,每个二维数组又由两个一位数组组成,
Sarray: 是指向 int (*)[2][3]类型的指针;//指向组成自己子元素类型的首元素(自己的子元素是二维数组,即指向二维数组类型)(有两个二维数组组成,这两个二维数组名为Sarray[0],Sarray[1])
Sarray[0]:是指向int *[3]类型的指针; //指向组成自己子元素类型的首元素(自己的子元素是一维数组,即指向一维数组类型)(有两个一维数组组成,这两个一维数组名为Sarray[0][0],Sarray[0][1])
Sarray[1]:是指向int *[3]类型的指针; //指向组成自己子元素类型的首元素(自己的子元素是一维数组,即指向一维数组类型)(有两个一维数组组成,这两个一维数组名为Sarray[1][0],Sarray[1][1])
Sarray[0][0]:是指向int *类型的指针; //指向组成自己子元素类型的首元素(自己的子元素是int型,即指向int类型)(有三个int型组成,这三int型数为Sarray[0][0][0],Sarray[0][0][1],Sarray[0][0][2])
Sarray[0][1]:是指向int *类型的指针; //指向组成自己子元素类型的首元素(自己的子元素是int型,即指向int类型)(有三个int型组成,这三int型数为Sarray[0][1][0],Sarray[0][1][1],Sarray[0][1][2])
Sarray[1][0]:是指向int *类型的指针; //指向组成自己子元素类型的首元素(自己的子元素是int型,即指向int类型)(有三个int型组成,这三int型数为Sarray[1][0][0],Sarray[1][0][1],Sarray[1][0][2])
Sarray[1][1]:是指向int *类型的指针; //指向组成自己子元素类型的首元素(自己的子元素是int型,即指向int类型)(有三个int型组成,这三int型数为Sarray[0][1][0],Sarray[0][1][1],Sarray[0][1][2])
同理&Sarray、&Sarray[0]、&Sarray[1]、&Sarray[0][0]、&Sarray[0][1]......
看下一个二维数组int array[2][3]={{1,2,3},{4,5,6}};的内存存储形式:
二维数组是嵌套定义的 ,这个二维数组就是由两个一维数组array[0]和array[1]组成的,
array[0]:是第一个一维数组的数组名,这个一维数组是{1,2,3};
array[1]:是第二个一维数组的数组名,这个一维数组是{4,5,6};
array[0][0]:是第一个一维数组的数组的第一个元素{1};
array[0][1]:是第一个一维数组的数组的第二个元素{2};
array[0][2]:是第一个一维数组的数组的第三个元素{3};
上面array[0]、array[1]就是这个一位数组的数组名,相当于a[3]={1,2,3}这个数组的a;
array数组的元素类型为: int (*)[3]类型
array[0]数组的元素类型为: int *类型
array[1]数组的元素类型为: int *类型
对于数组int array
;(N是一常量)。数组名array是一指向数组首元素的常量指针(也就是说,不可再指向别的存储单元),而&array是一指向整个数组的指针。所以:
array: 是指向
int (*)[3]类型的指针;//指向组成自己子元素类型的首元素(自己的子元素是一维数组,即指向一维数组类型)
array[0]:是指向int *类型的指针; //指向组成自己子元素类型的首元素(自己的子元素是int型,即指向int型,int *)
array[1]:是指向int *类型的指针; //指向组成自己子元素类型的首元素(自己的子元素是int型,即指向int型,int *)
&array: 是指向 int (*)[2][3]类型的指针;//指向自身数组类型的指针(自身类型是二维数组)
&array[0]:是指向int (*)[3]类型的指针; //指向自身数组类型的指针(自身类型是一维数组)
&array[1]:是指向int (*)[3]类型的指针; //指向自身数组类型的指针(自身类型是一维数组)
同理三维数组:
int Sarray[2][2][3] = {
{ { 1, 2, 3 }, { 4, 5, 6 } },
{ { 7, 8, 9 }, { 3, 6, 8 } }
};
上述三维数组:由两个二维数组组成,每个二维数组又由两个一位数组组成,
Sarray: 是指向 int (*)[2][3]类型的指针;//指向组成自己子元素类型的首元素(自己的子元素是二维数组,即指向二维数组类型)(有两个二维数组组成,这两个二维数组名为Sarray[0],Sarray[1])
Sarray[0]:是指向int *[3]类型的指针; //指向组成自己子元素类型的首元素(自己的子元素是一维数组,即指向一维数组类型)(有两个一维数组组成,这两个一维数组名为Sarray[0][0],Sarray[0][1])
Sarray[1]:是指向int *[3]类型的指针; //指向组成自己子元素类型的首元素(自己的子元素是一维数组,即指向一维数组类型)(有两个一维数组组成,这两个一维数组名为Sarray[1][0],Sarray[1][1])
Sarray[0][0]:是指向int *类型的指针; //指向组成自己子元素类型的首元素(自己的子元素是int型,即指向int类型)(有三个int型组成,这三int型数为Sarray[0][0][0],Sarray[0][0][1],Sarray[0][0][2])
Sarray[0][1]:是指向int *类型的指针; //指向组成自己子元素类型的首元素(自己的子元素是int型,即指向int类型)(有三个int型组成,这三int型数为Sarray[0][1][0],Sarray[0][1][1],Sarray[0][1][2])
Sarray[1][0]:是指向int *类型的指针; //指向组成自己子元素类型的首元素(自己的子元素是int型,即指向int类型)(有三个int型组成,这三int型数为Sarray[1][0][0],Sarray[1][0][1],Sarray[1][0][2])
Sarray[1][1]:是指向int *类型的指针; //指向组成自己子元素类型的首元素(自己的子元素是int型,即指向int类型)(有三个int型组成,这三int型数为Sarray[0][1][0],Sarray[0][1][1],Sarray[0][1][2])
同理&Sarray、&Sarray[0]、&Sarray[1]、&Sarray[0][0]、&Sarray[0][1]......
相关文章推荐
- 8--12指向多维数组元素的指针变量之指向二维数组的指针
- c 多维数组 指针关系总结
- 关于用二维数组调用函数的寻址(多维数组和指针)
- 第十章 数组和指针(函数和二维数组,本章个人总结)总结 140520
- C中关于一位数组与指针和二维数组与指针的一点总结
- 大端和小端格式的区别,以及二维数组和指针数组的学习总结。
- 字符串、字符数组、数组、指针关系总结
- 内存的堆分配和栈分配 & 字符数组,字符指针,Sizeof总结
- 学点 C 语言(22): 数据类型 - 多维数组与指针
- C/C++ 多维数组与指针
- 数组指针和多维数组 挑战你的c功底
- [转]内存的堆分配和栈分配 & 字符数组,字符指针,Sizeof总结
- 关于数组和指针:二维数组和指向数组的指针
- 多维数组的指针做函数参数
- 内存的堆分配和栈分配 & 字符数组,字符指针,Sizeof总结
- 指向多维数组的指针
- 内存的堆分配和栈分配 & 字符数组,字符指针,Sizeof总结
- 字符数组,字符指针,Sizeof总结
- 指向数组的指针与多维数组
- 字符数组,字符指针,Sizeof总结