A. c语言改变全局变量
你只是声明了函数,而不是调用:
#include"stdio.h"
inti=0;
intmain(void)
{
printf("%d",i);
voidadd(void);//这是个声明
add();//这是调用,下同
printf("%d",i);
voidadd_2(void);
add_2();
printf("%d",i);
}
voidadd(void)
{
i+=1;
}
voidadd_2(void)
{
i=1;
}
或者把函数的定义放在前面也能充当声明:
#include"stdio.h"
inti=0;
voidadd(void)//放前面
{
i+=1;
}
voidadd_2(void)
{
i=1;
}
intmain(void)
{
printf("%d",i);
add();//函数定义放前面就不用声明了
printf("%d",i);
add_2();
printf("%d",i);
}
B. 全局变量为何是静态存储类型,它的值不能被改变吗
每个程序运行的时候,系统会为程序分配4个区(栈区、堆区、静态区、代码区),(对于c语言而言)。
栈区存放auto变量,也就是临时变量。堆区存放堆变量(也就是malloc的地址,手动分配内存的方式)。代码区存放你写的程序代码。而静态区存放的就是全局变量和常量的,(静态区也细分为全局区和常量区(在linux下))。
所以常量的存储方式为静态存储。这种层的东西国人也就是理解层面的,不深。
你可以自己查查有关内存四区的知识,或者看看嗨翻c这本书。
C. 单片机C语言中的全局变量可以被修改吗
定义了全局变量就表示在这个函数a都为10.如果在主函数里或是其他自定义函数把a的值改变,则a变为了局部变量,则主函数里或是其他自定义函数中的a会覆盖掉全局变量中的a,也就是说在主函数里或是其他自定义函数中的a只是临时变量,当函数运行完,这个函数中的a寿命就终止了。当退出了这个函数后,a的值恢复到全局变量的10,全局变量是伴随着整个程序的。最好还是自己写程序实验,这样印象深刻。