C++二维数组
来源:互联网 发布:乔布斯是编程天才吗 编辑:程序博客网 时间:2024/06/05 17:23
如果数组的元素又是数组,则称为二维数组。例如
int a[3][4] = {{0, 1, 2, 3}, {4, 5, 6, 7}, {8, 9 ,10 ,11}};可以将a看成一个数组,这个数组中有3个元素,每个元素又是一个包含4个int的数组。
1 二维数组的标识符
当给出二维数组名而没有方括号时,可以将其看作是二维数组的标识符。该标识符不是左值,不能给它赋值,可以将其看作是数组的起始地址,即数组中第一个元素的地址。
2 a[x]的含义
x是非负整数。在之前提到,二维数组可以看成是数组的数组,所以a[0]表示二维数组中的第一个元素,a[1]表示二维数组中的第二个元素,而二维数组中的元素类型还是素组,所以a[0]表示数组{0, 1, 2, 3}的地址,a[1]表示数组{4, 5, 6, 7}的地址。
int a1 = *(a[0]+1);int a2 = *(a[1]+2);此时,a1的值是1,a2的值是6,如图1所示。
图1 a[x]的含义
3 a+x的含义
x是非负整数。a是指向其第一个元素,则a+1指向其第二个元素,a+2指向其第三个元素,如图2所示。
图2 a+x的含义
对于二维数组a,a和a[0]的值都是表示数组a的第一个元素的地址。而a、a+1和a+2的类型都是二维数组,所以a+1和(a+1)[0]的值都是表示a+1的第一个元素的值。
int b1 = *(a+1)[0];int b2 = *(a+1)[1];此时b1的值是4,b2的值是8。
4 (a+x)[y]的含义
x和y都是整数,在“3 a+x的含义”中提到,a+x的含义是指向二维数组的第x-1个元素,而a+x的类型仍然是二维数组,所以(a+x)[y]的表示二维数组中第y-1个元素。
int b3 = *((a+1)[0]+1);b3的值是5,如图3所示。
图3 (a+x)[y]的含义
4 定义指向数组的指针
定义数组的指针与定义数组类似,首先声明元素类型,之后是变量名字和维数。因为定义的类型是指针,所以需要在标识符前加上*。
int (*ip)[4] = &a[2];需要注意的是,方括号[]的优先级别高于*,所以在定义数组的指针时,必须加上小括号来设置优先级。如果不加入小括号设置优先级
int *ip[4];此时ip表示一个数组,该数组中包含4个元素,每个元素的类型是int*。
阅读全文
0 0
- C++:二维数组初始化
- [C] char 二维数组
- C#-二维数组---ShinePans
- C语言二维数组
- C语言二维数组
- c 语言 二维数组
- c语言-二维数组
- C二维数组练习
- C 二维数组
- C语言二维数组
- C语言 二维数组
- c++-引用二维数组
- C语言 二维数组
- C 二维数组排序
- C语言二维数组
- 【C语言】二维数组
- 动态二维数组(C++)
- 黑马程序员-C-二维数组&指针数组&二维数组指针
- oracle备份脚本示例
- linux 解决ls命令不显示文件颜色
- 第八周 【项目3
- 第九周-项目1
- Python 基础知识之 异常处理
- C++二维数组
- Codeforces Round #392 (Div. 2) 题解
- 内置锁(二)--synchronized下的等待/通知机制
- ABP官方文档(二十)【领域事件】
- POJ1005
- PhpStorm下Laravel代码智能提示
- 异步服务端(一) boost asio
- RBAC从零开始--Mybatis表映射实体
- POJ 1825/2279(Young/Mr. Young's Picture Permutations-杨氏矩阵和钩子公式)