A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© skywan 中级黑马   /  2015-7-19 14:19  /  1049 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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. }
复制代码

5 个回复

倒序浏览
全局变量和局部变量虽然同名,但是在内存中是分配各自的内存区域。12、13行的a是调用了外面的变量a,这个代码块结束,这个变量的数据是不会释放的,释放的只有在代码块内部定义的变量。

点评

恩恩,学习了  发表于 2015-7-19 18:56
回复 使用道具 举报
不错!!! 加油 !!!赞一个!!!
回复 使用道具 举报
学习了学习了
回复 使用道具 举报
不管是全局变量还是局部变量,都是 相对而言的,记住一点如局部的和全局的同名,那局部变量会占时覆盖掉全局变量,这个占时性要参考当代码块执行完毕是内存会释放问题。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马