C语言之指针数组与数组指针

本文详细分析了指针数组与数组指针的概念,通过实例解释了它们在C语言中的表达式结构,强调了优先级和结合性在解析符号时的重要性,并提供了分析问题的方法,即遵循规则和逐层剖析。

一:分析指针数组与数组指针

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)找到核心后从内到外逐层的进行结合,结合之后可以把已经结合的部分当成一个整体,再去和整体外面的继续进行结合

2.3总结3:基础理论和原则是关键,没有无缘无故的规则

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值