C语言编程常见问题解答
需积分: 11 122 浏览量
更新于2024-08-01
收藏 1.34MB PDF 举报
"《你必须知道的495个C语言问题》是一本关于C语言常见问题的集合,由Steve Summit原著,朱群英和孙云翻译,版本为0.9.4,发布于2005年。本书旨在帮助初学者深入理解和应用C语言,内容涵盖声明和初始化、结构、联合和枚举等多个方面的问题。
1. 声明和初始化
- 整数类型的选用应根据需求选择,如int、short、long long等,考虑存储空间和计算效率。
- 在64位系统上,64位类型如`long`或`long long`是64位宽的。
- 全局变量和函数应在头文件中声明,在实现文件中定义,避免命名冲突。
- `extern`关键字用于在其他源文件中引用已定义的外部变量或函数。
- `auto`关键字在现代C++中不再常用,但在旧代码中可能表示局部变量。
- 结构体可以包含指向自身的指针,但需要正确处理指针和内存分配。
- 非法声明通常与嵌套的指针和数组有关,需要正确解析声明的层次。
- 重复定义错误可能是由于包含头文件时的多重包含,需用预处理器指令`#ifndef/#define/#endif`避免。
- `main()`函数的标准定义是`int main(void)`,但允许其他形式,如`void main()`不推荐使用。
- 未初始化的变量值不确定,不应依赖其默认为零,全局变量会自动初始化,但可能是任意值。
- 字符串字面量不能直接赋给非数组指针,需要分配内存后赋值,如`char *p = malloc(sizeof(char) * 11); strcpy(p, "Hello, world!");`
- 初始化数组和指针的区别在于,数组可以直接初始化字符串,而指针需要动态分配内存并复制字符串。
2. 结构、联合和枚举
- `struct x1 {};`是声明一个结构类型,`typedef struct {} x2;`则是创建别名,两者用法略有不同。
- 结构体后面的`thestruct`语法错误,应为`struct x theStruct;`。
- 结构可以包含指向自身的指针,用于构建递归数据结构,如链表、树等。
- 实现抽象数据类型(ADT)通常通过结构体和访问函数(指针)实现封装。
- C语言本身不支持面向对象编程,但可以通过结构体和函数指针模拟类和继承的效果。
- 使用结构体时,如`struct name { int namelen; char namestr[1]; };`,`namestr[1]`用于动态增长字符串,但需要注意内存管理。
本书详细解答了C语言中的各种常见问题,适合C语言初学者和有一定基础的开发者查阅,帮助解决实际编程中遇到的困惑,提升C语言编程技能。"
119 浏览量
397 浏览量
2018-04-13 上传
2010-09-27 上传
2024-10-24 上传
2024-10-24 上传
2024-10-24 上传
ctokyo
- 粉丝: 4
- 资源: 1
最新资源
- 掌握Jive for Android SDK:示例应用的使用指南
- Python中的贝叶斯建模与概率编程指南
- 自动化NBA球员统计分析与电子邮件报告工具
- 下载安卓购物经理带源代码完整项目
- 图片压缩包中的内容解密
- C++基础教程视频-数据类型与运算符详解
- 探索Java中的曼德布罗图形绘制
- VTK9.3.0 64位SDK包发布,图像处理开发利器
- 自导向运载平台的行业设计方案解读
- 自定义 Datadog 代理检查:Python 实现与应用
- 基于Python实现的商品推荐系统源码与项目说明
- PMing繁体版字体下载,设计师必备素材
- 软件工程餐厅项目存储库:Java语言实践
- 康佳LED55R6000U电视机固件升级指南
- Sublime Text状态栏插件:ShowOpenFiles功能详解
- 一站式部署thinksns社交系统,小白轻松上手