尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Coursebook C数据类型速查表:10个必会关键字与类型详解

Coursebook C数据类型速查表:10个必会关键字与类型详解 Coursebook C数据类型速查表10个必会关键字与类型详解【免费下载链接】coursebookOpen Source Introductory Systems Programming Textbook for the University of Illinois项目地址: https://gitcode.com/GitHub_Trending/co/coursebook学习 C 语言的第一步就是吃透C 数据类型与关键字。本文基于开源系统编程教材CoursebookUniversity of Illinois CS 341 课程的官方教材introc/ 章节为新手整理了一份 C 数据类型速查表10 个必会的关键字与基本类型一次讲清char、int、long、float、const、void、struct等核心概念帮助你在编写 Linux 系统程序前打好地基 为什么选 Coursebook 学 CC 是系统编程的事实标准语言——Linux 内核、macOS 的 XNU 内核都用 C 编写。Coursebook 简介指出C 没有类、没有 RAII 等抽象让你有更多机会踩坑但也给了你更细粒度的控制能力。这份速查表覆盖 C 语言章节 中 language_facilities.tex 的核心内容建议配合阅读 一、基本数据类型速查表 ⚡C 的所有数据类型归根结底都是整数或浮点数的变体。以下是 C 标准规定的最小尺寸要求类型最小尺寸常见实际大小对齐要求char1 字节1 字节边界对齐short≥ 2 字节2 字节2 字节边界int≥ 2 字节4 字节2 字节边界long≥ 4 字节8 字节4 字节边界long long≥ 8 字节8 字节8 字节边界float—4 字节IEEE-754 单精度4 字节边界double—8 字节IEEE-754 双精度8 字节边界新手注意char表示恰好一个字节的数据unsigned char与signed char尺寸永远相同——这对所有类型都成立见 language_facilities.tex#L533-L550。需要精确的固定宽度类型使用stdint.h中的int8_t、int16_t、int32_t、int64_t加u前缀即无符号版本可移植性更好。二、10 个必会关键字详解 1.const编译期的只读承诺告诉编译器这个数据应保持恒定。但记住这只是编译器层面的限制——通过指针强转仍可绕过而系统写保护内存才是真正不可写的language_facilities.tex#L34-L59。const int i 0; // 等价于 int const i 0 const char *const str hi; // 常量指针指向常量字符串2.char一切数据的原子单位C 字符串就是一串以 NUL 字节0x00结尾的char。例如字符串Hi实际需要3 字节[H] [i] [\0]——忘记结尾 NUL 字节是新手最常犯的 bugcommon_bugs.tex#L112-L115。3.int最常用的整数int main(void)中的int就是它——声明函数返回类型。在绝大多数机器上为 4 字节约定return 0表示成功。4.short至少 2 字节对齐到 2 字节边界即地址必须能被 2 整除。5.long至少 4 字节在 64 位 Linux 上通常是 8 字节。书中指针算术练习就定义了long *long_; // sizeof(long) 8introc.tex#L166-L170。6.float与doubleIEEE-754 浮点float是单精度4 字节double是双精度8 字节两者都遵循 IEEE-754 标准。7.void双重含义的关键字函数上下文void foo(void)表示不接受参数、无返回值通用指针void *只是一个内存地址是不完全类型——不能解引用但可无强转地转换为任何对象指针malloc的返回值就是它8.unsigned无符号修饰符强制变量表现为无符号。unsigned short uns -127;这类写法会触发补码行为右移时补零而非符号扩展。9.struct组合多个类型C 结构体是连续内存区域成员像独立变量一样访问。注意成员之间可能有填充字节以保证内存对齐language_facilities.tex#L368-L386struct hostname { const char *port; const char *name; const char *resource; };真实案例网络编程中解析 TCP 头、IP 数据报就全靠struct如下图的 TCP 报文头10.typedef给类型起别名最常用于简化struct写法也提供底层类型抽象——将来想从float换成double只需改一处 typedeftypedef float real; typedef struct link link_t;三、进阶关键字速记 关键字一句话记忆位置sizeof编译期求值的字节数运算符language_facilities.tex#L304-L344static三种含义文件内可见 / 静态存储期 / 数组参数承诺language_facilities.tex#L346-L366volatile禁止编译器优化掉多进程/多线程必备language_facilities.tex#L506-L524extern声明变量定义在其他源文件language_facilities.tex#L124-L141restrict承诺内存区域不重叠language_facilities.tex#L264-L279⚠️常见陷阱sizeof(str1)char[]数组是 11而sizeof(str2)char*指针是 8——用 sizeof 求字符串长度会踩坑四、配套学习资源 关键字与数据类型完整原文language_facilities.tex常见 C 函数printf、fgets、string.hcommon_c_functions.texC 内存模型图解c_memory_model.tex指针详解与算术规则pointers.tex常见 bug 分析malloc 尺寸错误、NUL 字节common_bugs.tex逻辑与程序流错误logic_and_program_flow_mistakes.tex项目构建说明CONTRIBUTING.md总结一张表记住 10 个关键字 ✅#关键字/类型核心用途1char恰好 1 字节字符串基础2short至少 2 字节整数3int最常用整数通常 4 字节4long至少 4 字节64 位系统常为 8 字节5float/doubleIEEE-754 单/双精度浮点6const编译器层面的只读约束7void无类型 / 通用指针8unsigned无符号算术修饰9struct连续内存的组合类型10typedef类型别名与抽象掌握这份 C 数据类型速查表你已具备阅读 Linux 系统调用代码和 Coursebook 后续进程、线程、死锁章节deadlock/deadlock.tex、threads/threads.tex的基础下一步就该打开编译器动手实践了 【免费下载链接】coursebookOpen Source Introductory Systems Programming Textbook for the University of Illinois项目地址: https://gitcode.com/GitHub_Trending/co/coursebook创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表