1. C语言变量基础解析
变量是C语言中最基础也最重要的概念之一。简单来说,变量就是内存中一个具有名称的存储区域,我们可以通过变量名来访问和修改其中存储的数据。每个变量都有特定的数据类型,这决定了变量占用的内存大小和可以进行的操作。
1.1 变量的声明与定义
在C语言中,变量需要先声明后使用。声明变量的基本语法是:
c复制数据类型 变量名;
例如:
c复制int age; // 声明一个整型变量age
float salary; // 声明一个浮点型变量salary
char initial; // 声明一个字符型变量initial
变量声明时可以同时进行初始化:
c复制int count = 0; // 声明并初始化整型变量count
double pi = 3.14; // 声明并初始化双精度浮点型变量pi
注意:在C语言中,变量声明和定义通常是同时发生的。严格来说,声明告诉编译器变量的存在,而定义则分配存储空间。但在大多数情况下,我们说的"声明"实际上包含了定义。
1.2 变量的命名规则
C语言变量命名需要遵循以下规则:
- 只能包含字母、数字和下划线(_)
- 必须以字母或下划线开头
- 不能使用C语言关键字(如int, float等)
- 区分大小写(Age和age是不同的变量)
良好的命名习惯:
- 使用有意义的名称(如studentAge而非sa)
- 对于多个单词的组合,可以使用驼峰命名法(studentAge)或下划线分隔(student_age)
- 避免使用单个字符(除了循环计数器等简单场景)
1.3 变量的作用域
变量的作用域决定了它在程序中的可见范围:
- 局部变量:在函数或代码块内部声明,只在该函数或代码块内有效
c复制void function() {
int localVar = 10; // 局部变量
printf("%d", localVar);
}
- 全局变量:在所有函数外部声明,整个程序都可见
c复制int globalVar = 20; // 全局变量
void function1() {
printf("%d", globalVar);
}
void function2() {
printf("%d", globalVar);
}
- 静态变量:使用static关键字声明,生命周期贯穿整个程序运行期间
c复制void counter() {
static int count = 0; // 静态局部变量
count++;
printf("%d", count);
}
提示:全局变量虽然方便,但过度使用会导致程序难以维护和理解。建议优先使用局部变量,必要时再考虑全局变量。
1.4 变量的存储类别
C语言提供了四种存储类别说明符:
- auto:默认的存储类别,用于局部变量
- register:建议编译器将变量存储在寄存器中(现代编译器通常会自动优化)
- static:使局部变量具有静态存储期
- extern:用于声明在其他文件中定义的全局变量
2. C语言基本数据类型
2.1 整型变量
整型变量用于存储整数,C语言提供了多种整型:
| 类型 | 存储大小 | 值范围 |
|---|---|---|
| char | 1字节 | -128到127或0到255 |
| short | 2字节 | -32,768到32,767 |
| int | 通常4字节 | -2,147,483,648到2,147,483,647 |
| long | 4或8字节 | -2,147,483,648到2,147,483,647或更大 |
| long long | 8字节 | -(2^63)到(2^63)-1 |
可以在类型前加unsigned表示无符号数:
c复制unsigned int positiveOnly = 40000;
2.2 浮点型变量
浮点型变量用于存储实数:
| 类型 | 存储大小 | 精度 | 值范围 |
|---|---|---|---|
| float | 4字节 | 6-7位小数 | 1.2E-38到3.4E+38 |
| double | 8字节 | 15-16位小数 | 2.3E-308到1.7E+308 |
| long double | 通常16字节 | 19-20位小数 | 3.4E-4932到1.1E+4932 |
示例:
c复制float temperature = 36.5f; // 注意f后缀表示float类型
double pi = 3.141592653589793;
2.3 字符型变量
char类型用于存储单个字符:
c复制char grade = 'A';
char newline = '\n'; // 转义字符
字符实际上是以ASCII码存储的整数,所以可以进行算术运算:
c复制char c = 'A';
printf("%d", c); // 输出65
2.4 void类型
void类型表示"无类型",主要用于:
- 函数不返回任何值
c复制void function() {
// 不返回任何值
}
- 函数没有参数
c复制int function(void) {
// 不接受任何参数
}
- 通用指针类型(void *)
c复制void *
