黑马程序员技术交流社区

标题: c语言之局部变量 [打印本页]

作者: skywan    时间: 2015-7-19 14:19
标题: c语言之局部变量
1局部变量与全局变量使用范围的不同,2在代码内部可以定义和外部相同的变量名,只不过代码块结束就释放里面的内存数据,不在保留。
疑问:最后输出的结果a是最开始定义变量所在的内存值。
  1. int main(int argc,const char *argv)
  2. {
  3.         //定义局部变量a
  4.         int a=0;
  5.         printf("a=%d\n", a);//0
  6.         //代码块
  7.         {
  8.                 //定义另外一个局部变量a1
  9.                 int a1 = 10;
  10.                 printf("a1=%d\n", a1);//10
  11.                 //此时变量a访问外部的局部变量,指向最外层的变量a,重新赋值
  12.                 a = 20;
  13.                 printf("a=%d\n", a);//20
  14.                 //在代码内部可以定义和外部相同的变量名,重新定义变量a
  15.                 int a = 30;
  16.                 printf("a=%d\n", a);//30
  17.         }//代码块结束,释放内存a1,a
  18.         printf("a=%d\n", a);//20
  19.         return 0;
  20. }
复制代码

作者: 杨远鹏    时间: 2015-7-19 16:38
全局变量和局部变量虽然同名,但是在内存中是分配各自的内存区域。12、13行的a是调用了外面的变量a,这个代码块结束,这个变量的数据是不会释放的,释放的只有在代码块内部定义的变量。
作者: 默凉雨    时间: 2015-7-19 21:45
不错!!! 加油 !!!赞一个!!!
作者: shorfng    时间: 2015-7-19 21:57
学习了学习了
作者: 午夜码农    时间: 2015-7-19 22:03
不管是全局变量还是局部变量,都是 相对而言的,记住一点如局部的和全局的同名,那局部变量会占时覆盖掉全局变量,这个占时性要参考当代码块执行完毕是内存会释放问题。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2