C語言中,不同的函式中,可以定義相同的 變數名嗎

2025-06-26 17:05:40 字數 3414 閱讀 7432

1樓:與子如初見

可以,區域性變數的生命週期僅僅存在於乙個花括號之內。

2樓:藍很藍

看你在那裡定義了,在函式內定義是可以的,函式外不可以。

3樓:摩羯卡薩諾瓦

可以,區域性變數是可以的,全域性變數是不可以重複的!

c語言 在不同的 .c 檔案中可以定義相同名稱的函式嗎?

4樓:網友

這當然都是不可以的,除非這幾個。c檔案不會相互呼叫,即不同時存在於乙個工程之內,完全獨立沒有關係。

在c語言中,不同函式體內定義的變數可以同名.對嗎

5樓:江小右

可以,這個幾十涉及到變數的作用域了。除了全域性變數,區域性變數的作用域在函式體內。

另外哪怕同乙個函式體內 定義如下變數也是ok的:

int i =1;

for(int i=0;i<5;i++)

for 裡面的i和for 外面的i作用域也是不一樣的。

6樓:

形參是區域性變數沒錯,但是不能在乙個函式內定義另乙個函式。就是說不能巢狀定義函式。main() 這是不行的。

7樓:網友

可以,區域性變數作用於只是在當前的函式體內,該函式體執行結束區域性變數所佔用的記憶體空間就被釋放了。

8樓:溺水的魚

可以,只要保證函式體不同名就可以。

9樓:網友

函式體內定義的變數屬於區域性變數。

可以同名。

10樓:網友

對的,臨時變數無所謂的。

但最好還是不要和全域性變數同名,以免疏忽導致錯誤。

c語言中主函式中定義的變數,呼叫函式里還需要再定義嗎?

11樓:晨曦月殤

c語言中主函式中定義的變數只能在主函式中使用,所以你還得再定義乙個變數。

當然,捏可以把主函式中定義的這個變數傳遞給被呼叫的函式作為引數。

例如void fun(int x)

main()

但是如果你要在被呼叫函式中使用這個變數例如fun()

像這樣,就是錯的,編譯器會報錯,main中定義的變數是區域性變數,只能在main中使用。

你可以在main外部定義乙個變數,這樣在被呼叫函式中也就可以使用了。

c語言中函式宣告中的變數可以和函式定義中的變數不一樣嗎?哪乙個是形式引數?

12樓:網友

從記憶體角度來講,函式引數是一定儲存到棧區的,函式體內定義的變數可以儲存到棧區,比如區域性變數,也可以儲存到靜態資料區,比如static變數。示例如下:

#include #include void f(int a, int b) int main()

c語言可以在不同的原始檔中定義相同名字的全域性變數嗎

13樓:山東路雲

拿vc試啊,剛花了幾分鐘實測了下,不加static,不管是否初始化,都是在鏈結的時候報重定義錯誤,如果加了static, 不管是否初始化,編譯鏈結都沒問題,只是不同的原始檔佔用不同的記憶體,也就是說已經是兩個不同的static全域性變數了。

14樓:網友

可以,因這個不是語法錯誤,一般是邏輯錯誤!而這種錯誤是看程式設計人員要怎麼使用變數的!

15樓:周生

全域性變數。

既然是全域性的,你定義兩個怎麼辦?

16樓:空雪夢見

編譯會通過。

鏈結會失敗。

17樓:

不使用static的時候,兩個不同的原始檔都可以正常編譯,但會出現鏈結錯誤,原因是有兩個地方存在相同的變數,導致編譯器無法識別應該使用哪乙個。

另外,而使用static的時候,你所定義的static變數如果是區域性的話,編譯的時候編譯器會將其重新命名,其他檔案就不會使用到這個檔案的static變數了,這樣就使得只在本檔案內有效;如果是全域性的話,就全域性可見,共享同一塊記憶體空間。

具體細節請參考《c++反彙編與逆向分析》(錢林松),裡面講的很詳細。

如有疑問可以追加問題,歡迎採納,謝謝!

18樓:網友

可以啊!直接新增變數即可。

19樓:春秋幾許隨緣化

區域性的static變數(函式內部的)只是函式內部可見,全域性的static變數(函式外面的)應該是隻有當前原始檔可見。

c語言中的變數名什麼情況下可以用相同的變數名

20樓:葉片舟

不在同乙個作用域內,比如乙個在被調函式,乙個在主函式。

21樓:網友

不同的作用域內可以使用相同的變數名,優先使用小範圍的作用域。

作用域:全域性段、函式段、塊。

1.全域性段定義變數a, main函式中再定義a, 那麼main中函式中定義的a, 看下面例子。

2.塊,由花括號{} 包含的區域。比如if分支體, for,while迴圈體中定義的變數,其作用域是花括號內。

例:#include

int a = 100;

int main(void)

離開塊, 塊中定義的a就不存在了。

printf("a = %d", a); // 還在main函式中, 依然使用main區域性變數a, 50

return 0;}

22樓:cindere鞡

首先呢,你寫的這兩個迴圈別用同乙個變數,會導致錯誤的,然後呢,如果需要在同一內。

個程容序裡邊用名字相同的變數是完全可以的,但是要注意一些地方,記得c教材裡有講作用域的,比如最簡單的就是在不同函式里使用相同名字的變數,但是這個變數必須在這個函式里邊宣告,這樣使用起來互不干擾,完全沒有問題,這就是**塊作用域,那麼,還有一種是當乙個是全域性變數乙個是區域性變數時,也不會互相干擾使用,當沒有使用到區域性變數時,這個區域性變數保持預設值,而全域性變數會隨程式而執行,當程式執行到這個區域性變數所在**塊時,全域性變數儲存當前值,而區域性變數開始執行。

j**ascript中不同的函式定義中可以使用相同的變數名嗎?

23樓:會飛的身體

當然可以,不同的函式中當然可以使用相同的變數名,這不衝突。

c語言中,能定義兩個名相同的,但是引數不同的函式嗎

24樓:軒落_翼

不可以的,c語言翻譯成彙編,函式名中不帶引數的資訊,但是c++翻譯成彙編後,每乙個函式的名字除了包含了函式名,還包含了函式的引數資訊。

C名稱空間裡面,可以定義函式

int32 parse 在c 中,這樣的格式,相當於 前面是類名或名稱空間。例如,c 檔案開頭沒有using namespace std 我們可以這回樣呼叫cin和cout std cout hello,world 如果答要在類a的子類b的成員函式中呼叫類a的成員函式void fun 可以這樣 b ...

c語言中的abs函式,c語言中的abs函式ifabsx1x21什麼意思abs不是返回絕對值嗎

這條語句意思是 如果x1 x2的絕對值等於1,則if的條件成立,此時表示式abs x1 x2 1 的值是1,即條件成立。意思就是判斷x1 x2的差的絕對是不是等於1唄 y zeros fftsize,1 y 20 log10 abs x1 subplot 3,1,2 在matlab中,這些語句都什麼...

關於C語言中陣列的定義,C語言中如何定義陣列

一樣的,陣列在做函式引數時,傳遞給函式的都是陣列的首指標,哪怕你的函式這樣寫 void swp int p 在呼叫的時候swp array 也是可以的。只要傳遞給函式一個陣列的首指標就行了,而你的array正好是陣列的首指標。char s 10 123 是表示前三個元素分別是1,2,3但s 2 0 ...