<C Traps and Pitfalls>笔记
//------------------------------------------------------------------------------
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) { }
//------------------------------------------------------------------------------
posted on 2014-01-02 12:31 xuejianhui 阅读(153) 评论(0) 编辑 收藏 举报