C 变量
最后修改于 2023 年 4 月 10 日
在本文中,我们将展示如何在 C 语言中使用变量。
变量是一个存储位置。变量有一个名称和一个数据类型。数据类型决定了可以分配给变量的值,例如整数、字符串或布尔值。在程序运行期间,变量可以获得同一数据类型的各种值。
int x = 5;
x 是变量名。int 是数据类型,它决定了 x 变量可以保存什么值。= 是一个运算符,它将右侧的值赋给左侧的变量。5 是赋给 x 的整数字面量。最后,; 用于结束 C 语句。
变量名必须遵守 C 有效标识符的规则。变量名必须以字母或下划线 _ 开头。否则,它们可以由字母数字字符组成。在 C 语言中,变量名是区分大小写的。
C 变量示例
在下面的示例中,我们定义了几个变量。
#include <stdio.h>
int main() {
int x;
int y, z;
x = 5;
y = 6;
z = 7;
float w = 4.5;
double h = 5.5;
printf("%d %d %d\n", x, y, z);
printf("%f %f\n", w, h);
x = 55;
printf("%d\n", x);
}
在示例中,我们有五个变量。
int x; int y, z;
我们定义了三个变量。它们是整数数据类型。可以在一行上定义多个变量。
x = 5; y = 6; z = 7;
x、y 和 z 变量被初始化为其值。
float w = 4.5; double h = 5.5;
我们一次性定义并初始化了两个变量。
printf("%d %d %d\n", x, y, z);
printf("%f %f\n", w, h);
我们打印这五个变量的值。
x = 55;
我们将一个新值赋给 x 变量。
$ ./simple 5 6 7 4.500000 5.500000 55
C 变量初始化
在下一个示例中,我们将展示 C 变量初始化的几种方法。
#include <stdio.h>
int main() {
int x, y = 5;
printf("x: %d\n", x);
printf("y: %d\n", y);
int m = 6, n = 7;
printf("m: %d\n", m);
printf("n: %d\n", n);
int v, w;
v = w = 8;
printf("v: %d\n", v);
printf("w: %d\n", w);
}
我们有六个整数变量。
int x, y = 5;
在这一行,我们定义了两个整数变量。y 被赋值为 5。
x 变量的值是未定义的;即,它取决于所使用的编译器。在我们的例子中,x 被赋值为 0,但其他编译器可能会赋一些随机值。最佳实践是避免此类定义,并始终显式定义变量。
int m = 6, n = 7;
这是定义和初始化变量的一次性方法。
int v, w;
我们定义了两个整数。
v = w = 8;
我们将值 8 赋给两个变量。
$ ./init x: 0 y: 5 m: 6 n: 7 v: 8 w: 8
C 局部变量
C 局部变量在函数的作用域内定义。局部变量仅在其定义的函数内有效。
#include <stdio.h>
int max(int, int);
int main() {
int x = 4;
int y = 5;
printf("%d + %d = %d\n", x, y, x + y);
int _max = max(x, y);
printf("%d\n", _max);
}
int max(int x, int y) {
return x > y ? x : y;
}
我们在 main 和 max 函数中定义了两对 x 和 y 变量。这些变量不会冲突,因为它们仅在其函数的体内部有效。
$ ./local_var 4 + 5 = 9 5
C 全局变量
全局变量是在函数外部定义的变量。它在所有函数中都可以访问。全局变量应谨慎使用。
#include <stdio.h>
void f();
int x = 10;
int main() {
printf("x: %d\n", x);
x = 11;
printf("x: %d\n", x);
f();
printf("x: %d\n", x);
}
void f() {
printf("x: %d\n", x);
x = 12;
printf("x: %d\n", x);
}
我们定义了一个全局变量 x。我们可以在 main 和 f 函数中访问和修改它。
$ ./global_var x: 10 x: 11 x: 11 x: 12 x: 12
C 静态局部变量
静态局部变量只初始化一次,并且在函数调用之间保留其值。
#include <stdio.h>
void f();
int main() {
f();
f();
f();
f();
f();
f();
}
void f() {
static int n = 0;
int c = 0;
n++;
c++;
printf("n: %d, c: %d\n", n, c);
}
我们在 f 函数内部定义了一个静态局部变量 n 和一个普通的局部变量 c。我们多次调用 f 函数。每次调用函数时,我们都会递增变量。
$ ./static_var n: 1, c: 1 n: 2, c: 1 n: 3, c: 1 n: 4, c: 1 n: 5, c: 1 n: 6, c: 1
当 n 变量的值增加时,c 变量始终为 1。
C 变量 - 函数参数
值参数在函数调用时产生。它用调用中给出的参数值进行初始化。
#include <stdio.h>
int add(int, int);
int main() {
printf("%d\n", add(4, 5));
printf("%d\n", add(8, 9));
return 0;
}
int add(int x, int y) {
return x + y;
}
我们有两个函数参数:x 和 y。它们在 add 函数的作用域内有效。
$ ./function_params 9 17
C extern 变量
extern 变量意味着变量在不同的文件中定义。extern 关键字声明了一个变量;它通知编译器该变量存在。但它并没有定义它;即,它在那一点不为变量分配存储空间。
int x = 5; int y = 6;
在 myfile.h 文件中,我们定义了两个变量:x 和 y。
#include <stdio.h>
#include "myfile.h"
extern int x;
extern int y;
int main() {
printf("x: %d\n", x);
printf("y: %d\n", y);
}
在 extern_var.c 中,我们打印了来自头文件的 x 和 y 变量。
#include "myfile.h"
首先,我们包含该文件。
extern int x; extern int y;
我们声明了变量。我们告诉编译器这两个变量是在当前文件之外定义的。
$ ./extern_var x: 5 y: 6
在本文中,我们学习了如何在 C 语言中使用变量。