函式的宣告和全域性變數的問題,c語言 函式呼叫全域性變數需要宣告變數嗎

時間 2022-06-10 07:10:03

1樓:匿名使用者

函式是函式,變數時變數,沒有講函式可以成為全域性變數的說法

把函式宣告放在第二行,則在主函式裡面任意地點都能呼叫,而在主函式裡面宣告,那如果要呼叫這個函式,就必須在宣告之後,否則無法識別。

2樓:

做個假設

void main()

void test()

void fun ()

這段**你試試可以編譯通過嗎?不可以把?呵呵,這就是作用域的問題,你把它在main裡面宣告,就只用在main裡面可以呼叫。你是不是想說「不是啊,在別的函式也可以呼叫啊」

那我就要反問你了,這個為什麼就不行呢?

這時因為:我在fun函式之前寫了乙個函式test而且在其中呼叫了fun,但是我又沒在test裡面宣告fun,這時呼叫就出現了問題。

一般情況下,最好把函式的宣告寫在外面(最前面),不要寫到函式裡面,因為你有可能在很多函式中呼叫這個函式,對不對?

3樓:

1)函式的宣告:如果被調函式出現在主調函式main()之前,

那麼沒有必要宣告,如果被調函式出現在主調函式main()之後,

那麼要宣告!如你所說程式:

#include

int max(int x,int y); //宣告求二個數中的最大值

void main()

int max(int x,int y) //使用者定義int max()函式

而放在main()函式裡面的 int max(int x,int y)也是函式宣告,完整的程式如下:

#include

int max(int x,int y)

void main()

2)不會是全域性變數的了,因為 int max(int x,int y)是使用者定義的函式而不是常規變數!所謂的全域性變數是指外部變數,它不屬於哪乙個函式,而是屬於乙個源程式檔案~!如:

#include

int a,b; //外部變數a,b

int max(int x,int y); //宣告求二個數中的最大值

void main() //主函式main()

int max(int x,int y) //使用者定義int max()函式

希望能幫助你!!

4樓:

作用域不一樣

看作用域全域性這詞可以不用

放裡面其他main之外的函式不能呼叫

5樓:落慕冬天

全域性變數只針對於變數而言,函式不存在於全域性變數之說。

如果被呼叫的函式是在main函式後邊,那麼則需要第一天的函式宣告。反之則不用。

如:#include

int max(int x,int y);//函式的宣告main()

int max(int x,int y)

6樓:匿名使用者

放在main函式裡面宣告能編譯通過?不會吧???

放在main之前的話,只是說宣告和定義在一起了,放在main之後,那就需要再main之前宣告一下,並不是變不變成全域性的問題

c語言 函式呼叫全域性變數需要宣告變數嗎

7樓:暖心壽司

比如 int a = 10,b=20;int getsub(int a,int b)如果你這樣寫int getsub()

j**ascript怎麼在函式內宣告全域性變數

8樓:無敵張教主

function f()

f();

console.log(test);

//abc

c語言中,自定義函式可以使用全域性變數,為什麼還要傳遞

9樓:物理公司的

因為你不能全部使用全域性變數,

int sum(int a);//求a陣列的和,你a可以提前定義,但要求b,c,e呢,不得全部提前定義,那要分配多大的記憶體都是不夠的

怎樣定義和宣告全域性變數和函式最好?

10樓:千鋒教育

首先, 儘管乙個全域性變數或函式可以 (在多個編譯單元中) 有多處 「宣告」, 但是 「定義」 卻只能允許出現一次。定義是分配空間並賦初值 (如果有) 的宣告。最好的安排是在某個相關的 .

c 檔案中定義, 然後在標頭檔案 (.h) 中進行外部宣告, 在需要使用的時候, 只要包含對應的標頭檔案即可。定義變數的 .

c 檔案也應該包含該標頭檔案, 以便編譯器檢查定義和宣告的一致性。這條規則提供了高度的可移植性: 它和 ansi c 標準一致, 同時也相容大多數 ansi 前的編譯器和聯結器。

unix 編譯器和聯結器通常使用 「通用模式」 允許多重定義, 只要保證最多對一處進行初始化就可以了; ansi c 標準稱這種行為為「公共擴充套件」, 沒有語帶雙關的意思。可以使用預處理技巧來使類似

define(int, i);

的語句在乙個標頭檔案中只出現一次, 然後根據某個巨集的設定在需要的時候轉化成定義或宣告。但不清楚這樣的麻煩是否值得。

如果希望讓編譯器檢查宣告的一致性, 一定要把全域性宣告放到標頭檔案中。特別是, 永遠不要把外部函式的原型放到 .c 檔案中:

通常它與定義的一致性不能得到檢查, 而矛盾的原型比不用還糟糕。

c 全域性變數的問題,C 如何宣告全域性變數

定義應該放在。cpp檔案中。標頭檔案中是。extern 宣告,不是定義。定義放在標頭檔案,那包含此標頭檔案的。cpp都定義了此變數了,還不是多重定義嘛。你將你定義的全域性變數改為靜態的試試。應該是變數的鏈結性問題!如何在c 中設定全域性變數?1 首先,定義乙個實現加法運算自定義函式。2 接著,定義乙...

全域性變數的使用問題,全域性變數的使用注意

1,使用全域性變數會占用更多的記憶體 因為其生命期長 不過在計算機配置很高的今天,這個不稱為什麼問題,除非使用的是巨大物件的全域性變數,能避免就一定要避免。2,使用全域性變數程式執行時速度更快一些 因為記憶體不需要再分配 同樣也快不了多少。3,對於區域性變數的名字空間汙染,這個在不使用太多變數時是可...

c語言標頭檔案包含 全域性變數使用問題

c語言在標頭檔案中包含全域性變數有三種形式 1 在標頭檔案中宣告乙個全域性變數,在乙個c檔案中定義全域性變數,然後在所有的引用了這個標頭檔案的c檔案裡都可以使用該全域性變數值。如在main.c定義 int a 3 然後定義乙個main.h,那麼所有引用main.h的c檔案中,均可以訪問a並更改其值。...