C语言快速入门教程
首页
入门指南
基础教程
进阶教程
实战案例
编程指南
首页
入门指南
基础教程
进阶教程
实战案例
编程指南
  • 基础教程

    • Hello World 深入理解
    • 变量详解
    • 数据类型详解
    • 运算符详解
    • 输入输出详解
    • 条件判断 if-else
    • 循环语句
    • 函数详解
    • 数组详解

变量详解

嗨,我是长安!

变量是编程的基础中的基础。我记得当年学变量的时候,一开始也觉得很抽象,但慢慢理解后发现其实很简单。今天我来用最简单的方式给你讲清楚。

什么是变量?

变量就像一个贴了标签的盒子,用来存储数据。这是我当年学习时最能理解的比喻。

graph LR
    A[变量 age] --> B[盒子里装着: 18]
    C[变量 name] --> D[盒子里装着: 小明]

生活中的例子:

  • 你的储物柜 = 变量
  • 柜子的编号 = 变量名
  • 柜子里的东西 = 变量的值

为什么需要变量?

没有变量的程序:

printf("小明今年 18 岁\n");
printf("18 岁可以考驾照了\n");
printf("18 是成年的年龄\n");

如果年龄改了,要改很多地方!😫

有了变量:

int age = 18;
printf("小明今年 %d 岁\n", age);
printf("%d 岁可以考驾照了\n", age);
printf("%d 是成年的年龄\n", age);

只需要改一个地方!😊

变量的声明和使用

基本语法

数据类型 变量名 = 初始值;

例子

#include <stdio.h>

int main() {
    // 声明一个整数变量
    int age = 18;
    
    // 使用变量
    printf("年龄是:%d\n", age);
    
    return 0;
}

输出:

年龄是:18

变量声明的三种方式

方式1:声明并初始化

int age = 18;           // 推荐!
float height = 1.75;
char grade = 'A';

方式2:先声明后赋值

int age;        // 声明
age = 18;       // 赋值

方式3:同时声明多个变量

int a = 10, b = 20, c = 30;

// 或者
int x, y, z;
x = 1;
y = 2;
z = 3;

⚠️ 长安的血泪教训

使用未初始化的变量会得到垃圾值(随机值),我当年为这个bug找了好久:

int age;
printf("%d\n", age);  // ❌ 错误!age没有初始化

养成好习惯:变量声明时就初始化!这能帮你避免很多奇怪的bug。

变量命名规则

必须遵守的规则

  1. 只能包含:字母、数字、下划线
  2. 不能以数字开头
  3. 不能使用关键字(如int、return等)
  4. 区分大小写(age和Age是不同的变量)
// ✅ 合法的变量名
int age;
int student_age;
int studentAge;
int age2;
int _age;
int AGE;

// ❌ 不合法的变量名
int 2age;        // 不能以数字开头
int student-age; // 不能有连字符
int int;         // 不能用关键字
int 年龄;        // 不能用中文

命名建议

// ✅ 好的命名(见名知意)
int studentAge;      // 驼峰命名法
int student_age;     // 下划线命名法
int maxScore;
int totalCount;

// ❌ 不好的命名
int a;              // 太简短,看不懂
int age1, age2;     // 最好用更明确的名字
int xueshengAge;    // 不要用拼音

💡 长安的命名建议

这些是我工作5年总结出来的经验:

  • 变量名要有意义,别学我当年用a、b、c
  • 用英文,不要用拼音(我吃过这个亏)
  • 统一命名风格(驼峰或下划线),我现在用驼峰
  • 短小但清晰

变量的赋值和修改

#include <stdio.h>

int main() {
    // 初始赋值
    int age = 18;
    printf("初始年龄:%d\n", age);
    
    // 修改变量的值
    age = 19;
    printf("修改后年龄:%d\n", age);
    
    // 再次修改
    age = 20;
    printf("再次修改:%d\n", age);
    
    return 0;
}

输出:

初始年龄:18
修改后年龄:19
再次修改:20

格式化输出 printf

printf 可以输出不同类型的变量,使用格式化占位符:

常用格式化符号

占位符数据类型示例
%d整数(int)printf("%d", 123);
%f浮点数(float/double)printf("%f", 3.14);
%c字符(char)printf("%c", 'A');
%s字符串printf("%s", "Hello");
%p指针地址printf("%p", &age);

实例演示

#include <stdio.h>

int main() {
    int age = 18;
    float height = 1.75;
    char grade = 'A';
    
    // 单个变量
    printf("年龄:%d\n", age);
    printf("身高:%f\n", height);
    printf("等级:%c\n", grade);
    
    // 多个变量
    printf("我今年%d岁,身高%.2f米,成绩是%c\n", age, height, grade);
    
    return 0;
}

输出:

年龄:18
身高:1.750000
等级:A
我今年18岁,身高1.75米,成绩是A

格式控制

#include <stdio.h>

int main() {
    float pi = 3.1415926;
    
    printf("默认:%f\n", pi);        // 默认6位小数
    printf("2位小数:%.2f\n", pi);    // 保留2位小数
    printf("4位小数:%.4f\n", pi);    // 保留4位小数
    
    int num = 42;
    printf("右对齐:%5d\n", num);     // 占5位,右对齐
    printf("左对齐:%-5d***\n", num); // 占5位,左对齐
    printf("补零:%05d\n", num);      // 占5位,前面补0
    
    return 0;
}

输出:

默认:3.141593
2位小数:3.14
4位小数:3.1416
右对齐:   42
左对齐:42   ***
补零:00042

常量

常量是不能修改的值。

方式1:使用 const 关键字

#include <stdio.h>

int main() {
    const int MAX_AGE = 120;
    
    printf("最大年龄:%d\n", MAX_AGE);
    
    // MAX_AGE = 130;  // ❌ 错误!常量不能修改
    
    return 0;
}

方式2:使用 #define 宏定义

#include <stdio.h>

#define PI 3.1415926
#define MAX_SIZE 100

int main() {
    printf("圆周率:%f\n", PI);
    printf("最大容量:%d\n", MAX_SIZE);
    
    return 0;
}

💡 常量命名

常量通常用全大写字母,单词间用下划线分隔:

  • PI
  • MAX_SIZE
  • DEFAULT_VALUE

实战案例

案例1:计算圆的面积

#include <stdio.h>

#define PI 3.1415926

int main() {
    float radius = 5.0;
    float area;
    
    // 计算面积:π × r²
    area = PI * radius * radius;
    
    printf("半径为 %.2f 的圆,面积是 %.2f\n", radius, area);
    
    return 0;
}

输出:

半径为 5.00 的圆,面积是 78.54

案例2:温度转换(华氏度转摄氏度)

#include <stdio.h>

int main() {
    float fahrenheit = 98.6;  // 华氏度
    float celsius;             // 摄氏度
    
    // 公式:C = (F - 32) × 5/9
    celsius = (fahrenheit - 32) * 5.0 / 9.0;
    
    printf("华氏度 %.2f°F = 摄氏度 %.2f°C\n", fahrenheit, celsius);
    
    return 0;
}

输出:

华氏度 98.60°F = 摄氏度 37.00°C

案例3:交换两个变量的值

#include <stdio.h>

int main() {
    int a = 10;
    int b = 20;
    int temp;  // 临时变量
    
    printf("交换前:a = %d, b = %d\n", a, b);
    
    // 交换
    temp = a;
    a = b;
    b = temp;
    
    printf("交换后:a = %d, b = %d\n", a, b);
    
    return 0;
}

输出:

交换前:a = 10, b = 20
交换后:a = 20, b = 10

练习题

练习1:个人信息

编写程序,用变量存储并打印你的个人信息:

  • 姓名
  • 年龄
  • 身高
  • 体重

练习2:计算长方形面积

// 要求:
// 长 = 10.5
// 宽 = 6.5
// 计算并打印面积和周长

练习3:时间转换

// 已知秒数 = 3725
// 转换成:X小时Y分钟Z秒
// 提示:
// 小时 = 秒数 / 3600
// 分钟 = (秒数 % 3600) / 60
// 秒 = 秒数 % 60

答案参考

练习1答案
#include <stdio.h>

int main() {
    char name[] = "小明";
    int age = 18;
    float height = 1.75;
    float weight = 65.5;
    
    printf("===== 个人信息 =====\n");
    printf("姓名:%s\n", name);
    printf("年龄:%d岁\n", age);
    printf("身高:%.2f米\n", height);
    printf("体重:%.1f千克\n", weight);
    
    return 0;
}
练习2答案
#include <stdio.h>

int main() {
    float length = 10.5;
    float width = 6.5;
    float area, perimeter;
    
    area = length * width;
    perimeter = 2 * (length + width);
    
    printf("长方形信息:\n");
    printf("长:%.2f\n", length);
    printf("宽:%.2f\n", width);
    printf("面积:%.2f\n", area);
    printf("周长:%.2f\n", perimeter);
    
    return 0;
}
练习3答案
#include <stdio.h>

int main() {
    int totalSeconds = 3725;
    int hours, minutes, seconds;
    
    hours = totalSeconds / 3600;
    minutes = (totalSeconds % 3600) / 60;
    seconds = totalSeconds % 60;
    
    printf("%d秒 = %d小时%d分钟%d秒\n", 
           totalSeconds, hours, minutes, seconds);
    
    return 0;
}

知识点总结

  • ✅ 变量是存储数据的容器
  • ✅ 变量要先声明后使用
  • ✅ 变量名要有意义
  • ✅ 使用 %d、%f、%c 等格式化输出
  • ✅ 常量用 const 或 #define 定义
  • ✅ 变量声明时最好初始化

下一步

了解了变量,接下来学习数据类型!

👉 数据类型详解

最近更新: 2025/12/26 14:29
Prev
Hello World 深入理解
Next
数据类型详解