<C Traps and Pitfalls>笔记

本文深入探讨了C语言中的函数声明方式,包括通过指针调用函数的技巧,并解析了数组与指针的关系,以及如何正确理解数组作为函数参数的行为。

//------------------------------------------------------------------------------

2.1 理解函数的声明:

编写一个独立运行在某微处理器上的C程序,当计算机启动时,硬件将调用首地址为0位置的子例程。

(*(void (*)())0)();

可以简写为一下形势:

typedef void (*funcptr)();
(*(funcptr)0)();

信号函数:

void (*signal(int, void (*)(int) ))(int);

可以简写为:

typedef void (*HANDLER)(int);
HANDLER signal(int, HANDLER);

 

//------------------------------------------------------------------------------

3.1指针与数组:
C语言中的数组值要注意一下两点:
1,C语言中只有一位数组,而且数组的大小在编译期就作为常量确定下来。多维数组都是一维数组“仿真”出来的。
2,对一个数组,我们只能确定两件事:确定大小,获得下标为0的指针。任何数组的下标运算等同于对应的指针运算,因此我们可以依据指针行为定义数组下标行为。

 

//------------------------------------------------------------------------------

3.4作为参数的数组声明:
如果一个指针并不实际代表一个数组,即使从技术上而言是正确的,采用数组形式的记法经常会起到误导作用。

//强调argv是指向某数组的起始元素的指针,该数组的元素为字符指针类型。
int main(int argc, char* argv[])
{
}

//与上者等价
int main(int argc, char** argv)
{
}


//------------------------------------------------------------------------------

 

 

转载于:https://www.cnblogs.com/xuejianhui/p/3501659.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值