#include
#include
#include
int N=30;
int f(void);
int main(void)
{
printf("%d\n", f());
printf("%d\n", N);
int N = 18;
printf("%d\n", N);
getchar();
return 0;
}
int f(void)
{
int N;
N = 15;
return N;
}
输出:
15
30
18
从这个输出结果不难发现,当定义位置在外部,主函数内,定义函数内的时候有不同的结果发生~
下面慢慢道来~(其实也就几句话==)
1.定义函数 优先于 主函数 优先于外部变量
2.定义的函数在函数调用结束后,变量的生命周期也就结束了,以后还是参照外部变量。
3.下面是一个有误解的一种说法,现在加粗显示正确的说法:
在主函数内定义这个变量。则知道主函数结束都一直有用,所以修改了定义的外部变量的大小。(×)
定义的变量名称相同但是有不同的储存地址,所以并不会修改原先自己初始化的那个值,所以还是回到优先级的那个原因上吧~
但是对于宏定义,你再在其他地方去定义这个变量,编译器就会报错,至少VS是如此~