解读C的声明(用英语来阅读)

一.int (*func_p)(double);

1.首先着眼于标示符,func_p.英语的表达为:func_p is

2.再看括号里面的,*func_p.英语的表达为:func_p is pointer to

3.解释用于函数的(), 参数是double. 英语的表达为:func_p is pointer to function(double) returning

4.最后解释数据类型修饰符int.英语的表达为:func_p is pointer to function(double) returning int

5.翻译成中文:func_p 是指向返回int的函数的指针。

二.int atexit(void (*func)()(void));

1.首先着眼于标示符, atexit. 英语的表达为:atexit is

2.解释用于函数的(). 英语的表达为:atexit is function() returning

3.atexit的参数部分同上解释。

4.最后的英语表达为:atexit is function(func is pointer to function(void) returning void) returning int

5.翻译成中文:atexit 是返回int的函数(参数是,指向返回void没有参数的函数的指针).

三.void (*signal (int sig, void (*func)(int) )   ) (int); 标准库中的signal函数。

1.首先着眼于标示符,signal . 英语的表达为:signal is

2.相比*,()的优先顺序更高,所以先解释这部分

   signal (int sig, void (*func)(int) ), 英语的表达为:signal is function() returning

3.解释参数部分。第一个参数是int sig.英语的表达为:signal is function(sig is int, ) returning

4.另一个参数解释和第一种类似.

    signal is function(sig is int, func is pointer to function(int) returning void) returning

5.参数部分解释完,再解释*.

    signal is function(sig is int, func is pointer to function(int) returning void) returning pointer to

6.解释表示函数的(), 参数为int,返回void。

   signal is function(sig is int, func is pointer to function(int) returning void) returning 

pointer to function(int) returning void.

7.翻译成中文:signal 是返回“指向返回void 参数为int 的函数的指针” 的函数,它有两个参数,

一个是int,另一个是“指向返回void 参数为int 的指针的函数的指针”。

注:运用typedef可以让声明变得简洁。

typedef void(*sig_t) (int);

sig_t signal(int sig, sig_t func);

sig_t 代表“指向信号处理函数的指针”这个类型。

本文主要内容摘自《征服C指针》一书。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值