C语言进阶指南:易错概念解析与特性总结
需积分: 1 95 浏览量
更新于2024-09-07
收藏 668KB DOC 举报
本篇C语言笔记主要总结了一些在学习过程中容易混淆或出错的概念,包括关键字、存储类别、数据类型和特性。以下是详细的知识点:
1. **Static** 存储类别:在C语言中,`static`修饰的局部变量存储在程序的静态存储区,生命周期贯穿整个程序,即使函数结束也不会被销毁。
2. **Function1 和 Function2**:`Function1`可能是指的局部变量的`static`存储类别,而`Function2`通常指的是具有文件作用域的标识符,这些标识符在整个源文件范围内可见。
3. **Register** 类型:`register`关键字请求将变量存储在CPU寄存器,但编译器可能不会保证实现。变量应满足特定条件,如能被寄存器接受,并且不能使用`&`运算符获取其地址。
4. **Void指针**:`void*`是一种通用指针类型,可以指向任何类型的变量。它作为左值时,可以用来接收不同类型的指针,作为右值则用于强制类型转换。但不能直接存储实际数据。
5. **Extern** 关键字:`extern`用于指示变量或函数的定义不在当前作用域内,编译器会寻找全局或外部定义。
6. **Sizeof** 运算符:非函数的内置运算符,用于获取数据类型或变量所占内存的大小,其值在编译期间确定。
7. **Const** 关键字:用于声明常量和只读数组,编译器确保它们在运行时不被修改。不同类型const的指针权限也有所不同,如`constint*constpp`表示指针本身不可变但指向的内容可变。
8. **Volatile** 关键字:用于标记可能被多线程访问或受未知因素影响的变量,要求编译器每次访问都要重新从内存获取。
9. **Struct 和 Union** 结构体和联合体:结构体用于组合不同数据类型,每个成员独立分配空间,而联合体共享最大域的空间。结构体中的数组可以有柔性大小。
10. **Enum** 枚举类型:自定义类型,枚举常量默认连续编号。枚举变量只能取预定义的离散值,与宏定义`#define`的区别在于枚举有类型信息且常量是真正的常量。
11. **Typedef**:`typedef`用于重定义类型,但它不像`#define`那样进行文本替换,而是创建新的类型名,且不支持类型转换的扩展。
通过这篇笔记,学习者可以更好地理解和记忆C语言中的这些核心概念,避免常见的错误和混淆。
2013-02-17 上传
2009-08-25 上传
2022-07-02 上传
2022-07-02 上传
2022-07-03 上传
2007-08-31 上传
2012-10-09 上传
????????180
- 粉丝: 0
- 资源: 1
最新资源
- 高清艺术文字图标资源,PNG和ICO格式免费下载
- mui框架HTML5应用界面组件使用示例教程
- Vue.js开发利器:chrome-vue-devtools插件解析
- 掌握ElectronBrowserJS:打造跨平台电子应用
- 前端导师教程:构建与部署社交证明页面
- Java多线程与线程安全在断点续传中的实现
- 免Root一键卸载安卓预装应用教程
- 易语言实现高级表格滚动条完美控制技巧
- 超声波测距尺的源码实现
- 数据可视化与交互:构建易用的数据界面
- 实现Discourse外聘回复自动标记的简易插件
- 链表的头插法与尾插法实现及长度计算
- Playwright与Typescript及Mocha集成:自动化UI测试实践指南
- 128x128像素线性工具图标下载集合
- 易语言安装包程序增强版:智能导入与重复库过滤
- 利用AJAX与Spotify API在Google地图中探索世界音乐排行榜