1樓:慎樹花果琬
任何變數的初始化都只有一次,就是在定義變數的時候逗螞(我說的是狹義的初始化,即分配記憶體的時候做的變數賦值,配指鍵而不是之後),你不可能寫出第二次初始化。
那麼第二次賦值更改是有效培巧的,你可以自己寫**試試。
2樓:查素枝肥秋
c++語言中,靜態區域性變數,是指定義在函式內部,具有static修飾的變數。其定義形式為。
static
typevar
init_value;
或。static
typevar(init_value);
其含義為,定義乙個型別為type,名稱為var的靜態區域性變數,並初始值為init_value。
其中=init_value,或含散(init_value)為初始化部分,可以省略。
當省略時,變數會被自動初始化為0,如果變數為類物件,那麼會呼叫無參建構函式進行初始化。
當存在init_value時,會根據初始化引數的型別和個數,呼叫對應的建構函式。
注意:靜態局渣譁部變數的生命週期為整個程式的執行週期。在整個生命週期中,初始化只執行一次,談梁氏如第一次進入函式,物件值為初始化值。
之後每次進入函式時,物件值保持上次函式退出時的值。
為什麼全域性變數無須初始化,區域性變數必須初始化
3樓:
這個說法本身就不對。變數需要不需要初始化是根據需要來進行的。全域性變數有時也需要初始化,而區域性變數其實大部分時間都沒有初始化。
不要把賦初值與初始化混淆了:初始化是由編譯器做的,形成可執行檔案後,那些變數的值就在軟體檔案中放著,執行程式時直接使用了;而賦初值是由c/c++**實現的,程式開始執行後才給變數賦的值。只是全域性變數如果不顯式初始化,那麼編譯時由編譯器自動初始化為0,而編譯器對區域性變數是否有值視而不見,所以在程式開始執行前區域性變數的「值」是機器垃圾。
因此,區域性變數在獲得初值前若當右值使用就要出問題!區域性變數獲得初值有兩個途徑:一是初始化,如int x=3;就是在宣告x的型別時同時初始化為3——x==3這個值在編譯時就被編譯器確定了,程式啟動後不再執行int x=3;這種操作;二是賦初值,如int x;x=3;,int x;在編譯時執行,只宣告瞭變數型別,值是垃圾,x=3;是c/c++語句,每次啟動程式都要執行,將變數x賦值為3。
所以,說「區域性變數其實大部分時間都沒有初始化」,就是指我們建立函式時往往只寫int a,b,c,x,y,z;而並不給每個變數都初始化乙個確定的值,而是在使用前給它們賦初值,如緊接著寫scanf("%d%d%d",&a,&b,&c);或for(x=0;x<10;x++)其中x=0是給x賦初值)等。
4樓:網友
全域性變數會預設地初始化為0 而區域性變數不會。
靜態區域性變數和普通全域性變數以及靜態全域性變數的區別
靜態區域性變數和普通全域性變數以及靜態全集變數在編譯時,編譯器會自動給他回們分配地址。而且是從答mcu上電執行開始,一直駐留,不會被 的。而真正的區別在於他們的作用域。靜態區域性變數的作用域是在於定義它的那個函式內。由於其在編譯時編譯器就給他們分配了地址,並且做了初始化,所以它只能被初始化一次,而且...
C語言靜態區域性變數和全域性變數有什麼區別,不都是在整個程式中都
1 靜態區域性變數在函式內定義,但不象自動變數那樣,當呼叫時就存在,退出函式時就消失。靜態區域性變數始終存在著,也就是說它的生存期為整個源程式。2 靜態區域性變數的生存期雖然為整個源程式,但是其作用域仍與自動變數相同,即只能在定義該變數的函式內使用該變數。退出該函式後,儘管該變數還繼續存在,但不能使...
在西門子PLC中,使用區域性變數定義變數時有什麼方式來判斷呢。我老是弄混,有能說的容易懂得先謝了
區域性變數裡的是臨時資料,一般fc裡用的比較多,開啟fc,在頂端會讓你定義in,in out,out等等,比如你有4個電機,操作都一樣,那麼你要寫一個電機啟停的程式,在這個程式裡你定義了啟動,停止,執行輸出,然後對fc用區域性變數程式設計,編好後在ob裡呼叫,要啟動第一個電機,呼叫fc1,在fc1的...