from: http://zhidao.baidu.com/question/558964534.html 不同的作用域内可以使用相同的变量名,优先使用小范围的作用域。 作用域: 全局段、函数段、块 1.全局段定义变量a, main函数中再定义a, 那么main中函数中定义的a, 看下面例子 2.块,由花括号{} 包含的区域。比如if分支体, for,while循环体中定义的变量,其作用域是花括号内。 例: #include <stdio.h> int a = 100; int main(void) { printf("a = %d\n", a); // main函数还没有定义a, 这里使用全局变量a, 100 int a = 50; printf("a = %d\n", a); // 使用main函数定义的局部变量a, 50 if (1) { int a = 75; printf("a = %d\n", a); // 使用本块中定义的a, 75 } // 离开块, 块中定义的a就不存在了。 printf("a = %d\n", a); // 还在main函数中, 依然使用main局部变量a, 50 return 0; } from:http://zhidao.baidu.com/question/249769387.html对于{}符号理解不够透彻的原因,也就是程序为什么要缩进的缘由 比如 int main(){ int a,b;//在同个缩进等级内或大于的缩进等级内是能够访问的 a=10; while(a>0){ int c,d;//在这个缩进内是能够进行访问控制的 a=a-1; }//在这里会销毁 变量c和d c = 1;//这里会报错,出了局部变量的作用域 return 0; }//在这里会销毁main内定义的所有变量for中定义的变量,编译器编译后,是存放在栈空间上的一个临时内存地址,与变量名无关,一旦完成循环,栈地址会被复用,所以你那种写法,编译器在编译的时候,无法理解这个变量生存周期,所以提示没有定义
if while do while 也是一样 只要用到{},就是在 块作用域 内。
for()循环里面定义变量
最新推荐文章于 2024-09-14 16:32:36 发布