C for Rust Programmers
a day ago
- C语言的布尔类型直到C99才成为内置类型,并使用宏定义true/false;C23将其改为基本类型。
- C字符串以空字符结尾,需要显式分配额外字节,并小心处理长度与指针的关系。
- C语言中的整数宽度依赖于平台;建议使用<stdint.h>中的固定宽度类型以增强可移植性。
- C语言中的错误处理依赖于魔法整数和errno,没有编译器的强制检查,可能导致段错误。
- C语言使用不同的字段访问运算符(`.`用于值,`->`用于指针),不同于Rust的统一`.`。
- 数组在传递给函数时会退化为指针,导致sizeof返回指针大小而非数组大小。
- C语言没有引用或借用检查,只有原始指针,支持指针算术但存在内存错误风险。