一、内存分布
首先,常量放在全局变量区,变量放在栈区。虽然,变量和常量的名字可以相同,但是他们可是两个不同的事情啊。
二、局部优先
如果在main函数中同时出现了相同名称的变量名和常量名,那么局部有先
#include<stdio.h>
int a = 100;
int main(void)
{
int a = 10;
printf("%d", a);
return 0;
}
但是
#include<stdio.h>
int a = 100;
void test()
{
printf("%d\n", a);
}
int main(void)
{
int a = 10;
printf("%d\n", a);
a = 20;
test();
return 0;
}
在test函数中,使用的就是全局变量
虽然改变了局部变量的值,但是调用的还是局部变量啊。这更加证实了局部变量和全局变量的不同。