图解C语言中数组指针、指针数组、函数指针、函数指针数组、指向函数指针数组的指针

关于C语言中数组指针、函数指针、指针数组、函数指针数组、指向函数指针数组的指针一直比较绕,稍微整理一下。

到底是指针还是数组?

其实到底是指针还是数组还是看变量名与[]先结合还是*先结合。我们知道C语言中的优先级 () = [] > *,且()[]从左向右结合,所以int * arr[6]其实是一个数组,因为 arr先与[]结合定义一个数组,其次才是*。然而int (*pt)[6]是一个指针,因为 ()的优先级和[]相同,且从左向右结合,导致 pt先与*结合定义一个指针

指针数组

int * arr[6]指针数组首先是个数组。数组中的每个(6个)元素都是指针(指向 int 类型的指针)

指针数组

数组指针

int (*pt)[6]数组指针首先是个指针。指针指向一个数组(包含 6 个元素),该数组每个元素都是 int 类型。pt 是指针的名字,数组的名字未知。指针的值是某个数组的地址

数组指针

函数指针

int * (*pt)(char *c)函数指针首先是个指针。指针指向一个函数,该函数返回一个 int 类型指针,接受一个 char 类型指针的形参。pt 是指针的名字,函数的名字未知。指针的值是某个函数的地址

函数指针

函数指针数组

int * (*arr[6])(char *c)函数指针数组首先是个数组。这个数组(包含 6 个元素),每个元素都是一个函数指针。这些指针都指向某一个函数,该函数返回一个 int 类型的指针,接受一个 char 类型指针的形参

函数指针数组

指向函数指针数组的指针

int * (*(*pt)[6])(char *c)指向函数指针数组的指针首先是个指针。指针指向一个数组(包含 6 个元素),该数组每个元素都是一个函数指针。这些指针都指向某一个函数,该函数返回一个 int 类型的指针,接受一个 char 类型指针的形参

指向函数指针数组的指针

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值