
C指针之二维数组的运算和指针
发布日期:2021-05-07 15:11:55
浏览次数:20
分类:精选文章
本文共 973 字,大约阅读时间需要 3 分钟。
二维数组的运算和指针
指针指向二维数组的数组名
- 二维数组的数组名表示二维数组的第一维数组中首元素(也就是第二维的数组)的首地址
- 二维数组的数组名a等同于&a[0],这个和一维数组的符号含义是相符的。
- 用数组指针来指向二维数组的数组名是类型匹配的。
int a[2][5] = { {1, 2, 3, 4, 5}, {6, 7, 8, 9, 10}};printf("a[1][3] = %d.\n", a[1][3]);printf("a[1][3] = %d.\n", *(*(a+1)+3));//int *p1 = a; // 类型不匹配//int **p2 = a; // 类型不匹配// 指针指向二维数组的数组名int (*p3)[5]; // 数组指针,指针指向一个数组,数组有5个int类型元素p3 = a; // a是二维数组的数组名,作为右值表示二维数组第一维的数组 // 的首元素首地址,等同于&a[0]p3 = &a[0];printf("a[0][3] = %d.\n", *(*(p3+0)+3));printf("a[1][4] = %d.\n", *(*(p3+1)+4));
指针指向二维数组的第一维
- 用int *p来指向二维数组的第一维a[i]
// 指针指向二维数组的第一维//int *p4 = &a[0]; // 不可以int *p4 = a[0]; // a[0]表示二维数组的第一维的第一个元素,相当于是 // 第二维的整体数组的数组名。数组名又表示数组首元素 // 首地址,因此a[0]等同于&a[0][0];int *p5 = &a[0][0]; printf("a[0][4] = %d.\n", *(p4+4));int *p6 = a[1];printf("a[1][1] = %d.\n", *(p6+1));
指针指向二维数组的第二维
- 二维数组的第二维元素其实就是普通变量了(a[1][1]其实就是int类型的7),已经不能用指针类型和它相互赋值了。
- 除非int *p = &a[i][j];类似于指针指向二维数组的第一维。
总结:二维数组和指针的纠葛,关键就是2点:
- 数组中各个符号的含义。
- 数组的指针式访问,尤其是二维数组的指针式访问。
发表评论
最新留言
第一次来,支持一个
[***.219.124.196]2025年04月02日 06时45分10秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Vue学习—深入剖析渲染函数
2021-05-08
Vue学习—深入剖析函数式组件
2021-05-08
简单Makefile的编写
2021-05-08
使用BAT批处理 匹配查找指定文件夹,并在当文件夹下创建空文件
2021-05-08
wxpython的Hello,World代码探索
2021-05-08
【数字图像处理】OpenCV3 学习笔记
2021-05-08
【单片机开发】智能小车工程(经验总结)
2021-05-08
【单片机开发】基于stm32的掌上游戏机设计 (项目规划)
2021-05-08
KeepAlived介绍、配置示例、KeepAlived配置IPVS、调用脚本进行监控
2021-05-08
【Numpy学习】np.count_nonzero()用法解析
2021-05-08
Scala集合-数组、元组
2021-05-08
Flink Standalone集群安装和部署
2021-05-08
JAVA网络爬虫01-http client爬取网络内容
2021-05-08
04 程序流程控制
2021-05-08
java并发编程(1)
2021-05-08
C++&&STL
2021-05-08
分组背包问题
2021-05-08
子集(LeetCode 78)
2021-05-08
1004 Counting Leaves (30分)
2021-05-08
1093 Count PAT‘s (25分) 含DP做法
2021-05-08