C语言常见问题集原著:SteveSummit翻译:朱群英,孙云修订版0.9.4,2005年6月23日版权所有c⃝2005目录目录i前言xvii1声明和初始化11.1我如何决定使用那种整数类型?...................11.264位机上的64位类型是什么样的?................11.3怎样定义和声明全局变量和函数最好?...............21.4extern在函数声明中是什么意思?.................21.5关键字auto到底有什么用途?...................21.6我似乎不能成功定义一个链表。我试过typedefstruct{char*item;NODEPTRnext;}*NODEPTR;但是编译器报了错误信息。难道在C语言中一个结构不能包含指向自己的指针吗?....31.7怎样建立和理解非常复杂的声明?例如定义一个包含N个指向返回指向字符的指针的函数的指针的数组?..............31.8函数只定义了一次,调用了一次,但编译器提示非法重定义了。..41.9main()的正确定义是什么?voidmain()正确吗?.........41.10对于没有初始化的变量的初始值可以作怎样的假定?如果一个全局变量初始值为“零”,它可否作为空指针或浮点零?.......41.11代码intf(){chara[]="Hello,world!";}不能编译。.......51.12这样的初始化有什么问题?char*p=malloc(10);编译器提示“非法初始式”云云。...........................51.13以下的初始化有什么区别?chara[]="stringliteral";char*p="stringliteral";当我向p[i]赋值的时候,我的程序崩溃了。....51.14我总算弄清除函数指针的声明方法了,但怎样才能初始化呢?..52结构、联合和枚举72.1声明structx1{...};和typedefstruct{...}x2;有什么不同?.72.2为什么structx{...};xthestruct;不对?.............72.3一个结构可以包含指向自己的指针吗?...............72.4在C语言中实现抽象数据类型什么方法最好?...........72.5在C中是否有模拟继承等面向对象程序设计特性的好方法?...7i目录ii2.6我遇到这样声明结构的代码:structname{intnamelen;charnamestr[1];};然后又使用一些内存分配技巧使namestr数组用起来好像有多个元素。这样合法和可移植吗?............82.7是否有自动比较结构的方法?....................82.8如何向接受结构参数的函数传入常数值?..............82.9怎样从/向数据文件读/写结构?...................92.10我的编译器在结构中留下了空洞,这导致空间浪费而且无法与外部数据文件进行”二进制”读写。能否关掉填充,或者控制结构域的对齐方式?..............................92.11为什么siz...