
C指针之指针数组与数组指针
1.
2.
3.
确定核心:找出符号的核心部分。 确定结合顺序:从核心开始,逐步向外分析结合关系。 扩展结合:将结合的部分当作一个整体,继续向外分析。 优先级和结合性:了解C语言的结合规则,分析符号的优先级。 逐层剥离:从核心开始,逐步分析结合关系。 原则为先:没有无理的规则,所有规则都基于语言定义。
发布日期:2021-05-07 15:11:49
浏览次数:20
分类:精选文章
本文共 950 字,大约阅读时间需要 3 分钟。
指针数组与数组指针的深入分析
字面意思解析
在C语言中,指针数组与数组指针是两个常见但容易混淆的概念。从字面上理解,它们的含义并不复杂:
-
指针数组:实际上是一个数组,所有元素都为指针类型。例如,
int *p[5];
中的p
是一个指针数组,包含5个指针,指向整数类型的对象。 -
数组指针:则是一个指针,指向另一个数组。例如,
int (*p)[5];
中的p
是一个数组指针,指向一个长度为5的数组,该数组存储整数。
符号表达式分析
在C语言代码中,符号的定义方式直接影响其含义。要准确理解符号,关键在于分析符号的组成部分及其结合顺序。以下是常见符号的分析方法:
基本规律:
int *p;
:p
是一个指针,用于存储地址。int p[5];
:p
是一个数组,包含5个整数。
符号结合规则:
*
的结合优先级高于[]
,而[]
又高于()
。- 结合顺序决定了符号的含义。例如:
int *p[5];
:p
是一个指针数组,包含5个指针。int (*p)[5];
:p
是一个数组指针,指向长度为5的数组。int *(p[5]);
:p[5]
是一个数组,p[5]
也是一个指针,用于获取数组的第5个元素。
符号分析示例
1. int *p[5];
- 核心是
p
,p
是一个数组,包含5个指针。 - 每个指针都指向
int
类型的对象。 - 这是一个典型的指针数组。
2. int (*p)[5];
- 核心是
p
,p
是一个指针,指向一个数组。 - 该数组的长度为5,存储整数。
- 这是一个数组指针。
3. int *(p[5]);
- 核心是
p
,p
是一个数组,长度为5。 p[5]
是数组的第5个元素,也是一个指针。- 这个符号可以理解为通过数组索引访问指针。
分析原则
通过以上方法,可以准确解析C语言中的符号意义,避免理解错误。
总结要点
通过掌握以上方法,可以更好地理解指针数组与数组指针的区别和用法,避免在实际编程中出现混淆。
发表评论
最新留言
能坚持,总会有不一样的收获!
[***.219.124.196]2025年04月01日 17时11分27秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
2020.2.13普及C组 罗密欧与朱丽叶的约会【纪中】【前缀和】
2019-03-04
纪中2020.3.18普及C组模拟赛总结
2019-03-04
YbtOJ 递推算法课堂过关 例5 平铺方案【递推(简单DP)】
2019-03-04
YbtOJ hash和hash表课堂过关 例1 字符串哈希【hash】
2019-03-04
CSUST 2021 周赛 2 题解
2019-03-04
前后端数据交互之表单
2019-03-04
剑指offer JZ15 反转链表
2019-03-04
剑指offer JZ21 栈的压入弹出序列
2019-03-04
剑指offer JZ31 整数中1出现的次数
2019-03-04
实现基于scrapy框架的天气预报爬虫hengYangSpaider @572311文
2019-03-04
maven打包指定名称并去除jar-with-dependencies后缀
2019-03-04
Netty4服务端入门代码示例
2019-03-04
操作系统前传第六课--开发中的辅助工具
2019-03-04
Linux系统编程44 信号 - 信号的响应过程分析!!!
2019-03-04
VL53L0x TOF激光测距的 stm32 HAL库驱动代码
2019-03-04
怎么玩LOG4J
2019-03-04
Oracle创建用户,分配表空间
2019-03-04
自定义标签(JSP2.0)简单标签
2019-03-04
MyBatis自定义类型转换器
2019-03-04
机器学习(湖北师范大学教程)-极大似然估计算法
2019-03-04