1. 变量基础概念
变量是程序中用于存储和表示数据的名称。在C语言中,变量具有以下基本特点和规则:
变量名由字母、数字和下划线组成,不能以数字开头。
变量名不能与C语言的关键字重名。
变量在程序运行时占据内存空间,有一个唯一的地址。
2. 变量的说明方式
在使用变量之前,必须对其进行声明,声明的一般形式如下:
<存储类型> <数据类型> <变量名>;
存储类型:
C语言中的存储类型包括:`auto`、`register`、`static`、`extern`。
auto:默认的存储类型,变量在函数内部声明时,默认为 `auto` 类型,存储在堆栈中。
auto int x;
register:建议编译器将变量存储在CPU的寄存器中,以加快访问速度,不允许取地址。
register int count;
static:静态存储类型,用于声明静态变量,可以在函数内外使用。
函数内的静态变量会保留其值,不会在函数调用结束时销毁。
函数外的静态变量只能在声明它的文件中访问。
static int counter = 0; // 函数内静态变量 static int globalVar; // 函数外静态变量,默认初始化为0
extern:用于声明在其他文件中定义的全局变量,告诉编译器该变量在其他地方定义,不分配内存空间。
extern int globalVar; // 声明其他文件中定义的全局变量
数据类型:
C语言中的数据类型包括基本数据类型(如 `int`、`float`、`char`)、指针类型、数组类型、结构体类型等。
int age = 30; float pi = 3.14; char grade = 'A';
3. 变量的存储空间和地址
变量在内存中占据一定的存储空间,其大小由其数据类型决定。
每个变量都有一个唯一的内存地址,可以通过取地址运算符 `&` 来获取变量的地址。
int num = 10; printf("变量 num 的地址:%p\n", &num);
4. 示例程序
下面是一个结合了各种存储类型和数据类型的示例程序:
#include <stdio.h> int globalVar = 100; // 全局变量 void func() { auto int x = 5; // 自动变量,默认存储类型为 auto register int y = 10; // 寄存器变量,尝试存储在寄存器中 static int z = 0; // 静态变量,默认值为0,保留在内存中 printf("Auto variable x: %d\n", x); printf("Register variable y: %d\n", y); printf("Static variable z: %d\n", z); z++; // 静态变量 z 保留上次调用的值 } int main() { extern int globalVar; // 引用外部定义的全局变量 printf("Global variable globalVar: %d\n", globalVar); func(); // 调用函数 return 0; }