指针数组与数组指针
2015-11-11 22:46
387 查看
4.4.1.1、字面意思来理解指针数组与数组指针
(1)指针数组的实质是一个数组,这个数组中存储的内容全部是指针变量。
(2)数组指针的实质是一个指针,这个指针指向的是一个数组。
4.4.1.2、分析指针数组与数组指针的表达式
int *p[5]:
int (*p)[5]:
int *(p[5]):
一般规律:int *p;(p是一个指针); int p[5];(p是一个数组)
总结:
我们在定义一个符号时,关键在于:首先要搞清楚你定义的符号是谁(第一步:找核心);
其次再来看谁跟核心最近、谁跟核心结合(第二步:找结合);
以后继续向外扩展(第三步:继续向外结合直到整个符号完)。
如何核心和*结合,表示核心是指针;如果核心和[]结合,表示核心是数组;如果核心和()结合,表示核心是函数。
用一般规律来分析3个符号:
[] . ->这几个优先级比较高
第一个:int *p[5]; 核心是p,p是一个数组,是一个指针数组。数组有5个元素大,数组中的元素都是指针,指针指向的元素类型是int类型的;整个符号是一个指针数组。
第二个,int (*p)[5];核心是p,p是一个指针,指针指向一个数组,数组有5个元素,数组中存的元素是int类型; 总结一下整个符号的意义就是数组指针。
第三个,int *(p[5]); 解析方法和结论和第一个相同,()在这里是可有可无的。
注意:符号的优先级到底有什么用?其实是决定当2个符号一起作用的时候决定哪个符号先运算,哪个符号后运算。
遇到优先级问题怎么办?第一,查优先级表;第二,自己记住(全部记住都成神了,人只要记住[] . ->这几个优先级比较高即可)。
4.4.1.3、总结1:优先级和结合性是分析符号意义的关键
(1)在分析C语言问题时不要胡乱去猜测规律,不要总觉得c语言无从捉摸,从已知的规律出发按照既定的规则去做即可。
4.4.1.4、总结2:学会逐层剥离的分析方法
(1)找到核心后从内到外逐层的进行结合,结合之后可以把已经结合的部分当成一个整体,再去和整体外面的继续进行结合。
4.4.1.5、总结3:基础理论和原则是关键,没有无缘无故的规则
(1)指针数组的实质是一个数组,这个数组中存储的内容全部是指针变量。
(2)数组指针的实质是一个指针,这个指针指向的是一个数组。
4.4.1.2、分析指针数组与数组指针的表达式
int *p[5]:
int (*p)[5]:
int *(p[5]):
一般规律:int *p;(p是一个指针); int p[5];(p是一个数组)
总结:
我们在定义一个符号时,关键在于:首先要搞清楚你定义的符号是谁(第一步:找核心);
其次再来看谁跟核心最近、谁跟核心结合(第二步:找结合);
以后继续向外扩展(第三步:继续向外结合直到整个符号完)。
如何核心和*结合,表示核心是指针;如果核心和[]结合,表示核心是数组;如果核心和()结合,表示核心是函数。
用一般规律来分析3个符号:
[] . ->这几个优先级比较高
第一个:int *p[5]; 核心是p,p是一个数组,是一个指针数组。数组有5个元素大,数组中的元素都是指针,指针指向的元素类型是int类型的;整个符号是一个指针数组。
第二个,int (*p)[5];核心是p,p是一个指针,指针指向一个数组,数组有5个元素,数组中存的元素是int类型; 总结一下整个符号的意义就是数组指针。
第三个,int *(p[5]); 解析方法和结论和第一个相同,()在这里是可有可无的。
注意:符号的优先级到底有什么用?其实是决定当2个符号一起作用的时候决定哪个符号先运算,哪个符号后运算。
遇到优先级问题怎么办?第一,查优先级表;第二,自己记住(全部记住都成神了,人只要记住[] . ->这几个优先级比较高即可)。
4.4.1.3、总结1:优先级和结合性是分析符号意义的关键
(1)在分析C语言问题时不要胡乱去猜测规律,不要总觉得c语言无从捉摸,从已知的规律出发按照既定的规则去做即可。
4.4.1.4、总结2:学会逐层剥离的分析方法
(1)找到核心后从内到外逐层的进行结合,结合之后可以把已经结合的部分当成一个整体,再去和整体外面的继续进行结合。
4.4.1.5、总结3:基础理论和原则是关键,没有无缘无故的规则
相关文章推荐
- 新特性recyclerview 实现瀑布流
- 面向对象程序设计上机练习七(类和对象)
- Javascript设计模式理论与实战:桥接模式
- 关于org.apache.catalina.session.StandardManager doLoad错误的解决
- Java关键字final、static使用总结
- 面向对象程序设计上机练习六(类和对象)
- 如何将一个数组的地址作为函数的返回值!
- mysql nonInstall 版本的安装与配置
- 在spring中有三中实例化bean的方式
- Centos 7.1 RDO 安装 Liberty 问题及解决办法
- 《An Industrial-Strength Audio Search Algorithm》译文
- 最常用的 100 个 Java 类
- 《An Industrial-Strength Audio Search Algorithm》译文
- json 解析 读取数据 保存在新的 数组中
- 数据库创建
- 从远程服务器数据库中同步数据到本地数据库 sql server 2008 开启分布
- Postgresql日志系统的实现(一) - Postgres2015全国用户大会--重磅嘉宾佳作分享(李海翔)
- spark sql 创建dataframes
- a^2 + b^2 = c^2
- winnt.h(222) : error C2146解决办法