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並更改其值。...