當前位置:首頁 » 編程語言 » c語言全局變數值能被改嗎
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言全局變數值能被改嗎

發布時間: 2023-06-07 04:55:08

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,全局變數是伴隨著整個程序的。最好還是自己寫程序實驗,這樣印象深刻。