C语言-变量与常量
C语言-变量与常量

C语言-变量与常量

一、核心概念

​变量​​:程序运行时可以改变的数据容器,存储在内存中,有明确的数据类型和名称。

​常量​​:程序运行时不可修改的固定值,分为字面常量、符号常量(const)、预处理器常量(#define)。

二、关键知识点

  1. ​变量特性​​:
  • 声明语法:数据类型 变量名;(如 int age;)
  • 必须初始化后才能安全使用(否则是垃圾值)
  • 作用域:局部变量(函数内) vs 全局变量(文件内)
  • 生命周期:自动变量(函数结束销毁) vs 静态变量(程序结束销毁)
  1. ​常量分类​​:
  • 字面常量:直接写出的值(如 100, “Hello”)
  • const常量:带类型检查的只读变量(如 const float PI = 3.14;)
  • 宏常量:预处理阶段的文本替换(如 #define PI 3.14)
  1. ​对比差异​​:
特性变量const常量宏常量
内存分配占用内存占用内存不占用内存
类型检查
调试可见性可以观察地址和值可以观察地址和值无法调试
作用域遵循变量作用域规则遵循变量作用域规则文件全局替换

三、快速理解技巧

  • ​变量比喻​​:带标签的收纳盒(盒子上贴名字,内容可更换)
  • ​常量比喻​​:刻字的石碑(内容刻好后无法修改)
  • ​记忆口诀​​:
变量就像小盒子,名字类型装数据
常量刻字不变化,三种形式要分清
声明变量分类型,const宏定义选场景
先声明,后使用,初始化要牢记心

四、代码实例与逐行解析

#include <stdio.h>
#define TAX_RATE 0.1  // 宏常量:预处理时替换文本

int main() {
    // 变量声明与初始化
    float price = 100.0;    // 创建可修改的价格变量
    const float PI = 3.14;  // const常量:圆周率
    
    // 计算带税价格
    float total = price * (1 + TAX_RATE);  // 使用宏常量计算
    
    // 打印结果(包含字符串常量)
    printf("商品价格: %.1f\n含税总价: %.1f\n", price, total);
    printf("圆周率常量值: %f\n", PI);
    
    return 0;  // 整型字面常量作为返回值
}

​逐行解释​​:

  1. #include 包含标准输入输出库,使printf可用
  2. #define TAX_RATE 0.1宏常量定义:编译器在预处理阶段将所有TAX_RATE替换为0.1
  3. int main()程序入口函数,返回整型值
  4. float price = 100.0;
  • float:声明单精度浮点类型
  • price:变量名称
  • = 100.0:初始化赋值(100.0为浮点字面常量)
  1. const float PI = 3.14;
  • const:使变量成为只读常量
  • 试图修改PI会导致编译错误
  1. float total = price * (1 + TAX_RATE);
  • TAX_RATE被替换为0.1
  • 1为整数字面常量,自动转换为浮点参与运算
  1. printf(“商品价格…”, price, total);
  • 字符串常量作为格式说明
  • %.1f:格式化输出浮点数,保留1位小数
  1. return 0;
  • 0为整数字面常量
  • 表示程序正常退出

五、易错点提醒

  1. ​变量未初始化​​:int a; printf(“%d”,a); 可能输出随机值
  2. ​修改const常量​​:const int x=5; x=10; 导致编译错误
  3. ​宏常量陷阱​​:#define SQUARE(x) x*x调用SQUARE(3+2)会展开为3+2 * 3+2=11

六、应用场景选择

  • 需要类型检查时 → 用const常量
  • 需要跨文件使用的常量 → 用extern const
  • 简单数值替换 → 用宏常量
  • 需要调试观察值 → 避免使用宏常量

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注