c語言變數定義的位置問題

2023-04-15 10:10:05 字數 1437 閱讀 5530

1樓:匿名使用者

以花括號{}給包圍起來的**段稱為block(我不知道它的準確中文翻譯是不是叫模組),只要在block開始的地方定義變數就不會錯,且該變數的作用域和生存期(除了static限定)只在該block裡,且該變數可以遮蔽block外的變數。譬如在block外已經有一個變數名為a = 1的int變數,在block裡允許定義一個同名的變數int a = 2,但在block裡試著用printf列印的話,會發現printf("%d", a)結果是2.這就叫做遮蔽外面的變數!

2樓:

vc++編譯環境中,內部變數的定義要求在函式的開始部分,即在沒有賦值計算等其他語句之前定義。比如你這個:

void function(int n)

else改為:void function(int n)else

3樓:匿名使用者

你在函式內定義的變數,作用域只能在當前函式內。

你下面那段**。是個分支語句。所以不會報錯,就是if...int)..else(int)..語法上沒有錯。

但是你換個寫法,會看得更清楚些啊~

void function(int n)

else

4樓:圖靈使者波比

在c++中變數在使用前定義就可以,和位置沒有關係。

例如:你第二個例子i的使用方式。

c中這麼實用則不可以。

還有就是在函式體內定義的變數一般時區域性變數,函式結束,變數也就隨著消失。

了,如果在函式體內定義一個static變數,它就是全域性的。

5樓:網友

一般來說,變數的作用域是離得最近的一個{}中,就是說int i=n/2;定義的i只在 中有用,出了這個{}就會登出掉。

c語言中的變數可以在使用之前任何位置進行定義嗎

6樓:風若遠去何人留

全域性變數,可以在函式外任何位置定義。

區域性變數的合法定義位置,依賴於編譯器遵循的c規範版本。

1、僅支援c89規範的編譯器,只支援在作用域起始部分定義變數。

比如:void func(void)

的起始位置。

printf("%d",b);}

如果寫成。void func(void)

二、支援c99或者部分支援c99的編譯器:

區域性變數可以定義在任何位置。

之前的第二個例子中的定義方式,在這種編譯器下是合法的。

甚至部分支援c99全面的編譯器,支援。

for(int a=0; a<100; a++)在for中定義變數。

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

7樓:

**另存為到桌面開啟放大清楚點。

c語言全域性變數的定義,C語言中如何定義全域性變數

在所有函式外部定義的變數稱為全域性變數 global variable 它的作用域預設是整個程式,也就是所有的原始檔,包括 c 和 h 檔案。例如 int a,b 全域性變數 void func1 todo float x,y 全域性變數 int func2 todo int main todo r...

c語言函式的定義問題,C語言函式的定義問題

void就是沒有返回值,不需要return 是否需要返回值是由你的需求決定的。陳恩點在此為你解答如有錯誤請見諒 不是沒有返回值 是void 不能有返回值 include int f int i int main 第一個void表示沒有該函式沒有需要帶回的資料 當你的函式當中需要呼叫了某個函式,但是你...

c語言可以在for裡面同時定義變數嗎

可以的,比如 include void main 但是注意 在for裡面定義的區域性變數只有在for語句塊裡是有效的可見的而已,到外面就撤銷了 不存在了。在c 裡,還可以在for中的第一個表示式中定義變數,例如 include using namespace std void main 不過vc6不...