C语言复杂类型声明

看了书中讲复杂类型声明,颇为复杂,C语言在这点上够折腾人的,虽然方便了编译器。这里把它梳理一遍。

我们把声明的类型与表达式分开看
1.int a;
a这个表达式的值是整型

2.int array[N];
array[N]这个表达式的值是整型的,说明array是整型数组。

3.int *pA;
这里 *pA 表达式的值是整型,pA是指针。

4.int fun(int x, int y) ;
这里fun(int x, int y)表达式的值是整型,fun是函数。

5.int (*func)(int *p);
(*func)(int *p)的值是整型,那*func就是函数,所以func就是指向函数的指针了。

6.int (*func[5])(int *p);
*func[5]函数数组,返回值是整型,那么数组中的元素就是指向函数的指针了。

7.int (*(*func)[5])(int *p);
(*(*func)[5])表示函数数组,那么(*func)数组中的元素就是指向函数的指针了,所以func就是指向这个数组首地址的指针,这个数组中的元素都是指向函数的指针。

8.int (*(*func)(int *p))[5];
( *(*func)(int *p))[5]
是整型数组, 那么(func)(int *p)就是指向这个整型数组的指针,说明*func(int p)的返回值是一个指针,所以func是一个函数指针。
总结一下:func是函数指针,它所指向的函数返回值是一个指针,这个指针指向一个整型数组。

具体细节参考《The c programming language》中dcl,与dirdcl函数内容

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值