第一个例子:
#include <stdio.h>
int a=0; // 全局变量
void foo(void);
int main(void) {
int a=2; // main函数内的局部变量
int b=3; // main函数内的局部变量
printf("1. main_b = %d\n", b);
printf("main_a = %d\n", a);
foo();
printf("2. main_b = %d\n", b);
}
void foo(void){
int b=4; // foo函数内的局部变量
printf("foo_a = %d\n", a);
printf("foo_b = %d\n", b);
}
输出结果:
第二个例子:
#include <stdio.h>
int x = 2;
int y = 3;
int z = 4;
void moo(int x, int *y){
int z;
x = x+3;
*y = *y+3;
z = z+3;
/**
* 这里的 z 是局部变量。
* 注意:z 没有被手动初始化。
* 不过从后面的输出结果可以看出,z 被编译器自动初始化为 0。
* 一般情况下,编译器会有一个警告,告诉你 z 没有被初始化
**/
printf("moo : x = %1d, *y = %1d, y = %1d, z = %1d\n", x,*y,y,z);
}
int main(void){
moo(x, &y);
printf("main: x = %1d1, y = %1d, z = %1d\n", x,y,z);
}
输出结果: