二维数组
来源:互联网 发布:怎样注册农村淘宝网店 编辑:程序博客网 时间:2024/06/06 10:41
1、定义
定义二维数组的一般格式为:
元素数据类型说明 数组名[常量表达式1][常量表达式2];
例如: int x[10][8];
2、数组名代表数组元素首元素的地址
“数组名代表数组元素首元素的地址”既适用于一位数组,也适用于二维数组。
对于一维数组int a[5]而言,数组名a就表示首元素a[0]的地址,即数组名a等价于&a[0];
对于二维数组int a[2][5]而言,数组名就表示首元素a[0]的地址,即数组名a等价于&a[0]。
接着看a[0],此时的a[0]有两重身份:在二维数组的第一个维度里a[0]是数组的首元素;而在第二维度里,a[0]本身就是个数组,该数组的首元素是a[0][0],所以此时a[0]代表一个数组名。
通过“数组名代表数组元素首元素的地址”可知,a[0]等价于&a[0][0]。而前面同时有a等价于&a[0]的结论,所以可以得到a等价于&&a[0][0]。
3、指针访问二维数组的两种方式
普通指针指向二维数组的第一维:
int a[2][5];int *p1 = a[0];int *p2 = a[1];printf(“a[0][0] = %d.\n”,*p1); //a[0][0]printf(“a[0][1] = %d.\n”,*(p1+1)); //a[0][1];printf(“a[1][1] = %d.\n”,*(p2+1));
数组指针访问二维数组:
int a[2][5];int (*p)[5] = a;printf(“a[0][0] = %d.\n”,**p); printf(“a[0][4] = %d.\n”,*(*p+4));printf(“a[1][4] = %d.\n”,*(*(p+1)+4));
总结:
1、a[i][j] 等同于 ((p+i) + j);
2、p不解引用,对p加减是在第一维里编译地址
3、p解一次引用,对p加减是在第二维里编译地址
4、p解二次引用,才能访问到值,如*(*p);
阅读全文
0 0
- 二维数组
- 二维数组
- 二维数组
- 二维数组
- 二维数组
- 二维数组
- 二维数组
- 二维数组
- 二维数组
- 二维数组
- 二维数组
- 二维数组
- 二维数组
- 二维数组
- 二维数组
- 二维数组
- 二维数组
- 二维数组
- TensorFlow CIFAR-10数据集
- CSS设计美丽之横排页面(小作品)
- nginx 点播mp4方法
- RSA私钥和公钥文件格式 (pkcs#7, pkcs#8, pkcs#12, pem)
- HSSFSheet导出excel
- 二维数组
- VS中C++静态/动态库文件的编译调试与使用
- 页面滚动到特定位置
- 实验四 数据查询——简单查询 Sql Server数据库实验
- win10 如何安装jdk 如何解决javac不是内部命令或是外部命令
- 猜数字
- python学习资源汇总
- Django 之 (1)基本命令
- spring构造方法之索引注入