⑴ extern修飾的外部變數可以隨意改變其值嗎
可以改變。定義為全局變數。
⑵ 局部變數、全局變數、外部變數個採用什麼存儲方式
局部變數是指在函數內部,臨時申請的內存空間,函數執行完成後就自動被釋放掉,也在程序RAM空間;全局變數是指在函數外部聲稱的變數,程序執行過程中不會被釋放,程序未退出之前,一直在程序的RAM空間;外部變數,指的是不在本文件中聲稱的全局變數。
⑶ extern 聲明的變數 在內存的哪個位置數據段、.bss、堆、棧
定義的地方通常在不帶extern的地方,如果有初始值就存在數據段,未初始化存bss段
⑷ 用extern修飾的變數外部調用可以改變其值嗎
應該可以吧,試試不就知道了。。
⑸ c語言extern
extern是全局變數聲明
只要聲明全局變數就默認 前面加extern(程序員可以不加,但編譯器默認加上)
若本文件 引用別的文件中的全局變數 一定要加上extern 聲明一下
例如 #include "my_Fun.c"
extern int b;//b是在my_Fun.c中聲明了的一個全局變數
這個extern 是個聲明他可以在任何地方聲明 引用了一個全局變數 (可以試試 在main()函數執行完之後聲明 也不會出錯)
這樣在 工程的總頭文件中就不需要考慮 先#include 哪個文件了
⑹ C語言中變數存儲static和extern兩個關鍵字的作用分別是什麼
在C語言中,static可以用來修飾局部變數,全局變數以及函數。在不同的情況下static的作用不盡相同。
(1)修飾局部變數
一般情況下,對於局部變數是存放在棧區的,並且局部變數的生命周期在該語句塊執行結束時便結束了。但是如果用static進行修飾的話,該變數便存放在靜態數據區,其生命周期一直持續到整個程序執行結束。但是在這里要注意的是,雖然用static對局部變數進行修飾過後,其生命周期以及存儲空間發生了變化,但是其作用域並沒有改變,其仍然是一個局部變數,作用域僅限於該語句塊。
在用static修飾局部變數後,該變數只在初次運行時進行初始化工作,且只進行一次。
如:
程序執行結果為: 2
3
說明在第二次調用fun()函數時,a的值為2,並且沒有進行初始化賦值,直接進行自增運算,所以得到的結果為3.
對於靜態局部變數如果沒有進行初始化的話,對於整形變數系統會自動對其賦值為0,對於字元數組,會自動賦值為'