指针数组,数组指针,函数指针,函数指针数组,指向函数指针数组的指针之间的区别

本文详细解析了指针数组、数组指针、函数指针等概念的区别,并通过实例帮助理解这些复杂的数据结构和类型定义。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    很久没有更新博客,今天我们来说说指针数组,数组指针,函数指针,函数指针数组,指向函数指针数组的指针之间的区别。
 

    1. 首先 ,我们来说指针数组和数组指针。
指针数组是一个数组,数组的每个元素都是指针。

     数组指针是一个指针,它指向一个数组。
     举一个例子

    int *p[2] 和  int(*p)[2]
    则第一个就是指针数组,第二个就是数组指针。来判断的时候首先我们判断优先级的问题,[ ]优先级高于*,()优先级又高于[ ].所以第一个p先和2结合,是数组。第二个p先和*结合,是指针。

2.下面我们来说说函数指针、函数指针数组和指向函数指针数组的指针
函数指针是一个指向函数的指针,本质是一个指针。

函数指针数组是一个指向函数指针的数组,本质是一个数组。
函数指针数组的指针是一个指向函数指针数组的指针,本质是一个指针。

下面我们来举3个例子
int   (*p)(int n) 是一个函数指针,p先与*结合,因此p是一个指针。后与(int n)结合,为函数指针。

int  (*p[ ])(int n)是一个指向函数指针的数组,p先与[ ]结合为一个数组,再与*结合为指针数组,后与(int n)结合,就为一个指向函数指针的数组。
int  *((*p[ ])(int n))是一个指向函数指针数组的指针,因为优先级()>[ ]>*,*p[ ]是一个指针数组,((*p[ ])(int n))是一个指向函数指针的数组 ,整体来看 int  *((*p[ ])(int n))就是一个指向函数指针数组的指针了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值