黑马程序员技术交流社区
标题:
全局变量和局部变量的问题
[打印本页]
作者:
二狗
时间:
2014-4-16 03:18
标题:
全局变量和局部变量的问题
为什么a的值每次都会增加 而b的值每次不变
#include <stdio.h>
int a = 10;
void test()
{
a++;
int b = 0;
b ++;
printf("a=%d,b=%d\n",a,b);
}
int main()
{
test();
test();
test();
return 0;
}
复制代码
作者:
stone24
时间:
2014-4-16 03:55
调用test函数,里面a++作用于外面的全部变量a ,输出的时候,也是输出全局变量a的值,当函数执行完,代码所有东西被回收,而a不会受影响,当第二次调用时,b在函数内又重新定义,所以不管调用多少函数,输出b的值都是不变的,而a就会一直递增。
作者:
墨迹的可乐
时间:
2014-4-16 04:58
#include <stdio.h>
int a = 10; //定义全局变量a
void test()
{
a++; //a+1
int b = 0; //定义局部变量b
b ++; //b+1
printf("a=%d,b=%d\n",a,b); //打印出a,b的值,之后函数调用结束,释放内存,b的值也不复存在
}
int main()
{
test(); //a=11 ,b=1
test(); //a=12, b=1
test(); //a=13, b=1
return 0;
}
复制代码
局部变量所分配的内存会在它所在的函数调用完成用释放,下一次调用会重新分配内存,而全局变量则会一直存在,直到程序结束。
作者:
m573555543
时间:
2014-4-16 06:00
a++;
int b = 0;
b ++;
printf("a=%d,b=%d\n",a,b);
这段代码的意思是:定义一个整型变量b,赋值为0。然后b自加。输出b。
在返回到定义一个整型变量b,赋值为0。然后b自加。
一直到循环语句结束都是这样。
所以b=1
作者:
王雪冬
时间:
2014-4-16 07:06
看代码中的注释:
#include <stdio.h>
int a = 10; //这里声明是全局变量
void test()
{
a++;
int b = 0; //这里是局部变量
b ++;
printf("a=%d,b=%d\n",a,b);
}
int main()
{
test();
test();
test();
return 0;
}
复制代码
当在main函数进行 test()时,a的值是不会被重新定义赋值的,所以a的值每次都会在原来的基础上增加1
而b是定义在test函数体内的,每次进行test(),b都会被从新定义初值化,所以每次b都是1
作者:
李烨
时间:
2014-4-16 08:12
void test()
{
a++;
int b = 0;
b ++;
printf("a=%d,b=%d\n",a,b);
}
*****************************************************
首次int b是test()函数里的局部变量,每次调用test()的时候int b = 0都会把b重新赋值,不管以前都少,到这句话都重新赋值为0,所以b一直是0.
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2