“指针数组”和“数组指针”的区别、函数指针定义及引用

1. 以int   *p[5],Int (*p)[5]为例子来分析。 首先要理解中文层面上来理解指针数组、数组的指针。

先分析Int *p[5], 变量p为核心,然后判断* 和[5]的优先级哪个高,谁的优先级高,p就与谁先结合,从C语言的符号优先级表可知(优先级表读者可自行百度),[]的优先级高于*,所以p与[]先结合,故p[5]为数组,再*与p[5]结合,解析为数组p 有5个变量,且每个变量的类型为指针类型,接着*p[5]再与int结合,整体解析为数组p 有5个变量,且每个变量的类型为指针类型,指针指向的类型为int,这就是我们说的指针数组。


再分析Int (*p)[5],同样的解析方式: 由里向外一层一层的解析。 由于括号的原因,(*p)中的p强制先与*结合,因此我们可以判断变量p为指针变量,指向的是一个数组,该数组有5个变量,每个变量的类型是int 。这就是我们所说的数组指针。


2.我们通过数组指针延伸到函数指针。

首先我们定义一个简单的函数指针便于大家理解: void  (*p)(void)。怎么理解这种定义呢? 跟上述的方法一样,首先p因为()的原因强制先*结合,则变量p为指针变量,指向的是一个输入参数为void ,返回类型void 的一个函数(为什么是函数呢?在c语言中规定指针后面跟在的()为函数指针)。


3.应用(为了方便,我直接在kile+ 软件仿真+ 串口打印结果),具体如下:



PS:第一张定义了一个func1函数,在函数中打印 function pointer testing 

 第二张定义一个函数指针,引用strcpy复制字符串函数,将复制后的结果打印。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值