对指针数组 ; 数组指针 ; 函数指针 ; 函数指针数组 ; 指向函数指针数组的指针的理解

本文详细解析了指针与数组的关系,包括指针数组、数组指针及函数指针的概念与使用方法,并通过实例说明了如何正确理解这些复杂的概念。

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

大前提:数组是数组指针是指针,数组和指针没有关系。

判断一个表达式是指针还是数组要看这个表达式先和谁结合。

指针数组:指针数组是一个数组,像int *a[ ] 由于a先和括号结合所以a是一个数组,数组中的元素是指针,故其是一个整型指针数组。

数组指针:数组指针是一个指针,如int (*a)[ ]由于a先和*结合,故a是一个指针,指针中存放数值的地址,其实一个整型数组指针。

函数指针:函数指针是一个存放函数地址的指针,既可以通过指针调用函数,亦可通过函数名直接表示。

函数指针的声明方法为:

函数类型 (标志符指针变量名) (形参列表);

int (*a)(int x,int y)

函数指针数组:

函数指针数组:我们也可以参考前面的分析方法,它是一个数组,这个数组中的元素就是我们前面所提到的函数指针。

char *(* p[3])(char *p);

上面这个就是一个函数指针数组,首先它是有3个元素的一个数组,里面存放的是指向函数的指针,这些指针指向一些返回值类型为指向字符的指针。 
在这里的关键你要知道这个是数组,数组中的元素是函数指针。

指向函数指针数组的指针:char *(*(*p[3])(char *p);

在这里,首先按照优先级从个最里面看,最里面的(*p)这是一个指针。 
(*( *p)[3])这个说了这个指针是指向含有三个元素的数组的指针。 
char*( *(*p)[3])(char *p)这个说了这个数组中存放的元素是3个函数指针,这些指针指向一些返回值为指向字符的指针。然后这个函数的参数是指向字符的指针。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值