函数中使用的变量是函数的局部变量。使用它们的值,然后在函数完成时丢弃它们。
#include <stdio.h>
void proc(void);
int main() {
puts("First call");
proc();
puts("Second call");
proc();
system("pause");
return(0);
}
void proc(void) {
int a;
printf("The value of variable a is %d
", a);
printf("Enter a new value: ");
scanf("%d", &a);
}
proc()
函数中的变量a
不保留值。该变量仅由scanf()
函数初始化。
修改源代码:
#include <stdio.h>
void proc(void);
int main() {
puts("First call");
proc();
puts("Second call");
proc();
system("pause");
return(0);
}
void proc(void) {
static int a; // 添加 static
printf("The value of variable a is %d
", a);
printf("Enter a new value: ");
scanf("%d", &a);
}
执行上面示例代码,得到以下结果:
First call
The value of variable a is 0
Enter a new value: 234
Second call
The value of variable a is 234
Enter a new value: 123
由于变量声明为static
,因此在函数调用之间保留其值。如果每次调用函数时都需要保留其值,则需要将变量声明为static
。