一:分析指针数组与数组指针
1.1字面意思来理解指针数组与数组指针
(1) 指针数组的实质其实就是一个数组,数组里面存放的全部是指针变量。
(2) 数组指针实质上就是一个指针,这个指针指向的是一个数组
1.2分析指针数组与数组指针的表达式
(1)int *p[5] ; int (*p)[5] ; int * (p[5]) ;
(2) int *p;(p是一个指针) int p[5] ; (p是一个数组)
总结:在定义一个符号的时,关键在于:
第一步:先要搞清楚定义的符号是谁(找到核心)
第二步:其次要找到谁离核心近,谁和符号结合(找结合)
第三步:后面就继续向外扩展直到整个符号完。
(3) 如果核心和*结合,表示核心是指针;如果核心和[]结合,表示核心是数组;如果核心和()结合,表示核心是函数
(4) 用一般规律来分析 三个符号:
第一个:int *p[5]; (核心是p,p一个数组,数组有五个元素,数组中的元素都是指针,指针指向元素的类型是int类型,整个符号是一个指针数组)
第二个:int (*p)[5]; (核心是p,p是一个指针,指针指向一个数组,数组中存放的元素是int类型的) 总结一下整个符号的意义就是一个数组指针
符号的运算优先级有什么用处? 就是当两个符号同时作用时,决定那个符号先运算 ,哪个符号后运算。
第三个:int *(p[5]) (和第一个相同,核心是p,p是一个数组,数组有五个元素,数组中的元素都是指针类型,指针指向的元素都是int类型)
遇到优先级问题怎么办?第一,查优先级表;第二自己记住(全部记住不太可能,但是只要记住[] . ->这几个优先级比较高即可)。
二:总结
2.1总结1:优先级和结合性时分析符号意义的关键
(1)在分析C语言问题时不要胡乱猜测规律,不要总觉得C语言无从捉摸,从已知的规律出发,按照既定的规则去做即可
2.2总结2:学会逐层剥离的分析方法
(1)找到核心后从内到外逐层的进行结合,结合之后可以把已经结合的部分当成一个整体,再去和整体外面的继续进行结合
本文详细分析了指针数组与数组指针的概念,通过实例解释了它们在C语言中的表达式结构,强调了优先级和结合性在解析符号时的重要性,并提供了分析问题的方法,即遵循规则和逐层剖析。

2583

被折叠的 条评论
为什么被折叠?



