C语言编程疑惑解答——495个经典问题解析
需积分: 31 3 浏览量
更新于2024-07-30
收藏 1.34MB PDF 举报
“你必须知道的495个C语言问题”
这本书涵盖了C语言编程中的各种常见问题和细节,旨在帮助程序员深入理解和熟练掌握C语言。以下是部分章节和问题的详细解释:
1.1 关于整数类型的选用,C语言提供了多种整数类型,如`int`, `short`, `long`, `long long`等。选择哪种类型取决于你需要存储的数值范围以及平台的位宽。在64位系统上,通常`int`至少是32位,`long`和`long long`可能是64位。
1.2 在64位机器上,64位整型类型通常是`long`或`long long`。然而,标准并未规定64位整型的具体长度,这取决于实现。使用`stdint.h`头文件中的固定宽度类型如`int64_t`可以确保跨平台的一致性。
1.3 定义全局变量和函数时,推荐将它们放在单独的头文件中进行声明,并在对应的源文件中进行定义。使用`extern`关键字在需要的地方引入全局变量或函数的声明。
1.4 `extern`在函数声明中表示该函数是在其他地方定义的,告诉编译器函数的存在,但不包含函数体。
1.5 `auto`是C语言中默认的局部变量存储类别,但在现代C++中几乎不再使用,因为它的作用与未指定存储类别的变量相同,即自动存储。
1.6 C语言允许结构体包含指向自身的指针,问题中的typedef语法错误可能是因为缺少分号或者结构体名称和typedef名称冲突。正确的做法是:`typedef struct { char *item; struct Node *next; } Node;`
1.7 复杂声明的理解可以通过从右向左读取来辅助,例如,一个返回指向字符的指针的函数的指针数组可以写作:`int (*(*arr[N])(char *))()`。
1.8 如果函数只定义一次,但编译器提示非法重定义,可能是重复包含了包含函数声明的头文件,应使用预处理器指令`#ifndef`、`#define`和`#endif`来防止头文件的重复包含。
1.9 `main()`函数的正确定义通常为`int main(void)`或`int main(int argc, char *argv[])`。`void main()`在C99标准中不被推荐,但在某些实现中可能仍然有效。
1.10 未初始化的变量的值是不确定的,不能假设其为零、空指针或浮点零。全局变量在C语言中默认初始化为零,但局部变量则不是。
1.11 代码`int f(){char a[]="Hello,world!";}`不能编译,因为字符串字面量不能直接赋值给非静态局部数组,需要使用动态内存分配。
1.12 `char *p=malloc(10);`的初始化问题在于,`malloc`返回的是`void *`,需要显式类型转换。正确写法是`char *p = (char *)malloc(10);`
1.13 `char a[]="stringliteral";`是字符串字面量的复制,可以修改;`char *p="stringliteral";`是只读的字符串常量,尝试修改会导致未定义行为。
1.14 函数指针的声明通常像这样:`typedef int (*func_ptr)(int);`初始化则可以写成:`func_ptr ptr = some_function;`
2.x 结构、联合和枚举的章节涉及C语言的复合类型。结构可以包含指向自身的指针,用于实现链表等数据结构。抽象数据类型的实现通常通过结构体和指向结构体的指针来完成,而C语言不直接支持面向对象特性,但可以通过模拟实现,如结构体嵌套、函数指针等。
以上只是部分内容的解析,书中详细解答了495个问题,覆盖了C语言的各个方面,包括类型系统、内存管理、指针操作、预处理器、函数、文件I/O、错误处理等,对于提升C语言编程技能非常有帮助。
121 浏览量
401 浏览量
2018-04-13 上传
2012-10-04 上传
2024-12-26 上传
2024-12-26 上传
2024-12-26 上传
pangxing127
- 粉丝: 0
- 资源: 2
最新资源
- landing-page
- test2:测试
- FMake-开源
- [影音娱乐]秀影电影程序VodCMS 6.0.3_showmo.rar
- MOGAN
- 安卓京东2022自动炸年兽v2.0.txt打包整理.zip
- HardwarEngineerRequiredReadingGongLue,单机片c语言源码,c语言项目
- Ma réussite Ulaval-crx插件
- mailer:一个免费的表格数据到电子邮件平台,任何人都可以使用。-开源
- web3:mmmm
- adsds:比萨大学计算机科学系“算法和数据结构(用于数据科学)”课程的页面
- PersonalBudget-Web
- DEC5502_USB,像素鸟c语言源码,c语言项目
- 手机号码归属地查询 PHP版_m_php_工具查询网站开发模板(使用说明+PHP源代码+html).zip
- libLASi-开源
- une banane-crx插件