1. C语言数据类型概述
作为一门经典的编程语言,C语言的数据类型系统是其核心基础之一。理解数据类型不仅关系到程序的正确性,更直接影响内存使用效率和程序性能。在实际开发中,我曾见过太多因为数据类型使用不当导致的bug - 从简单的数值溢出到复杂的内存访问越界。
C语言的数据类型可以分为基本类型和派生类型两大类。基本类型包括整型、浮点型和字符型,它们是构建更复杂数据结构的基石。派生类型则包括数组、结构体、联合体等,这些我们将在后续章节讨论。
重要提示:选择合适的数据类型是C语言编程的第一步。一个常见误区是初学者喜欢直接使用int类型处理所有数值,这可能导致内存浪费或精度不足。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 常量与变量的本质区别
2.1 常量的内存特性
常量在程序运行期间其值不可改变,这种不可变性体现在编译后的二进制代码中。根据我的调试经验,常量通常以两种形式存在:
- 直接嵌入指令:如MOV指令中的立即数
- 存储在只读数据段(.rodata):如字符串常量
例如下面的代码:
c复制int main() {
int a = 100; // 100可能直接编码在指令中
const char *str = "hello"; // "hello"存储在.rodata
}
2.2 变量的内存管理
变量对应着可读写的内存区域,其生命周期由作用域决定。在嵌入式开发中,我们经常需要精确控制变量的存储位置:
c复制int global_var; // 存储在.bss段(未初始化全局变量)
int init_var = 10; // 存储在.data段(已初始化全局变量)
void func() {
static int s_var; // 静态局部变量,存储在.bss或.data
int local_var; // 存储在栈上
int *heap_var = malloc(sizeof(int)); // 存储在堆上
}
2.3 常变量的特殊性质
常变量(const变量)是一个有趣的中间态,它具备变量的存储特性,但拥有常量的不可变性。在嵌入式开发中,const变量常用于定义硬件寄存器地址:
c复制const uint
