C++中指针数组、数组指针、函数指针、指针函数的区别

 

一、区分指针数组和数组指针

首先要判断他是一个指针还是数组

比如:int (*p)[3]  p首先是一个指针,如果有括号p先于括号里面的结合,所以这个表达的就是数组指针

        int* p[3],还是先看是指针还是数组呢?可以根据结合律可以知道,p先跟右边结合,也就是说p是一个数组,数组里面的元素都是int指针类型。

所以不难发现,指针数组还是数组指针,后两个字就代表了类型,我们最重要的是先确定他是一个数组还是指针,之后就不难判断了。

二、区分函数指针和指针函数

这个判断和区别指针数组和数组指针如出一辙,我们也要先判断他是一个函数,还是一个指针。

bool (*pf) (const string&,const string&)  首先pf是一个指针,这个指针指向了一个有两个参数类型为const string&,返回值是bool类型的函数,所以这是一个函数指针。

bool* pf(const string&,const string&) 可以发现pf是一个函数名字,而返回值成了bool*,所以这是一个指针函数

三、关于函数指针的一些注意事项

1.函数指针的类型必须与它所指向的函数的签名完全匹配,包括返回类型、参数的数量和类型。任何不匹配都会导致编译错误。

2.函数指针在声明时必须被初始化为指向某个有效的函数,否则它们将包含垃圾值,尝试调用这些垃圾值会导致程序崩溃。

3.函数指针和指针一样,可以设置初始值为空指针,nullptr、=0也是可以的

希望这篇文章对你有所帮助,在C++中关于指针的一些知识尤其重要,可以多加关注。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值