回覆列表
  • 1 # 不冷的臥

    全域性變數,可以在函式外任何位置定義。區域性變數的合法定義位置,依賴於編譯器遵循的C規範版本。1、僅支援C89規範的編譯器,只支援在作用域起始部分定義變數。比如:

    void func(void){ int a=1;//函式體起始位置。 if(a>0)//其實這個判斷沒有意義,僅為提供樣例。 { int b=2;//判斷部分{}的起始位置。 printf("%d\n",b); }}

    如果寫成

    void func(void){ int a;//第一個定義,合法。 a=1;//執行一個語句。 int b;//這個定義不在作用域起始處,編譯會報錯。 }

    二、支援C99或者部分支援C99的編譯器:區域性變數可以定義在任何位置。之前的第二個例子中的定義方式,在這種編譯器下是合法的。甚至部分支援C99全面的編譯器,支援

    for(int a=0; a<100; a++)

    在for中定義變數。 三、目前大多數編譯器,均支援任何位置定義變數,但僅有少部分支援for中定義變數,所以在編碼時,不建議for中定義,會降低可移植性。

  • 中秋節和大豐收的關聯?
  • 肌腱炎吃什麼藥比較好?