C语言常见问题与解答:深入解析

需积分: 9 1 下载量 19 浏览量 更新于2024-08-02 收藏 1.35MB PDF 举报
"这是一本关于C语言常见问题的集合,由Steve Summit原著,朱群英和孙云翻译。该书涵盖了C语言的各种基础和高级主题,包括声明和初始化、结构、联合和枚举等内容。书中针对编程中可能遇到的问题进行了详细解答,旨在帮助读者深入理解和应用C语言。" 在C语言中,选择合适的整数类型是非常重要的。1.1节建议根据实际需求和平台特性来决定使用int、short、long或者long long等类型。64位机上的64位类型如long int通常会是64位,但具体取决于编译器的配置。 声明全局变量和函数时,1.3节推荐使用extern关键字进行外部声明,并在合适的地方定义它们,以避免名字空间的冲突。1.4节提到,extern在函数声明中表示该函数是在其他地方定义的。 关于auto关键字,1.5节解释它在函数作用域内默认指定变量存储类别,但在现代C++中已不常用。1.6节指出,C语言允许结构体包含指向自身的指针,问题可能出在typedef的使用或者语法错误上。 复杂声明的理解是C语言的一大挑战,1.7节提供了解析这类声明的方法,而1.8节提醒读者,重复声明会导致编译错误,应确保每个标识符在整个作用域内唯一。 1.9节提到,main()函数的标准定义是int main(void),但有些编译器接受void main()。1.10节指出,未初始化的变量值是不确定的,全局变量默认不初始化,不应假设其值为零或空指针。1.11节的示例显示,字符串字面量不能直接赋值给字符数组,而1.12节的问题在于,malloc返回的指针需转换为适当类型后才能初始化。 1.13节比较了字符数组和字符指针的区别,字符数组可以直接初始化为字符串字面量,而指针需要分配内存后赋值。1.14节则讨论了函数指针的声明和初始化,强调了正确的语法。 在结构、联合和枚举方面,2.1节解释了struct声明和typedef的区别,2.2节指出结构体名和结构体变量名的区分,2.3节确认结构体可以包含指向自身的指针以实现递归结构。2.4节和2.5节探讨了在C语言中实现抽象数据类型和面向对象特性的一些策略。 这本书是C语言学习者的重要参考资料,它提供了丰富的实践问题解答,有助于提升对C语言的理解和应用能力。