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

時間 2023-01-16 02:00:06

1樓:匿名使用者

定義應該放在。cpp檔案中。

標頭檔案中是。

extern 宣告,不是定義。

定義放在標頭檔案,那包含此標頭檔案的。cpp都定義了此變數了,還不是多重定義嘛。

2樓:

你將你定義的全域性變數改為靜態的試試。。。

應該是變數的鏈結性問題!

如何在c++中設定全域性變數?

3樓:特特拉姆咯哦

1、首先,定義乙個實現加法運算自定義函式。

2、接著,定義乙個實現乘法運算的自定義函式。

3、最後,在主函式中實現程式的運算。

4、定義在函式外部沒有被花括號括起來的變數稱為全域性變數,全域性變數的作用域從變數定義的位置開始一直到檔案結束。

5、如果在乙個程式中多個函式都要對同乙個變數進行處理,可以將這個變數定義成全域性變數,例如本例中自定義函式product和主函式都用到了全域性變數。

6、執行程式,可以看到全域性變數對檔案中位於全域性變數定義後面的任何函式都起作用。

4樓:網友

定義變數不要放在任何函式裡面包括main函式就ok了。

5樓:歡

你好:在主函式和其他函式之外定義就好了,最好放在檔案最上面。

祝你好運!

c++如何宣告全域性變數?

6樓:網友

有兩個類都需要使用共同的變數,將這些變數定義為全域性變數。比如,和res.

cpp分別來宣告和定義全域性變數,類producerthread和consumerthread來使用全域性變數。

/**宣告全域性變數***

#pragma once

#include

const int g_ndatasize = 1000; /生產者生產的總資料量。

const int g_nbuffersize = 500; /環形緩衝區的大小。

extern char g_szbuffer; /環形緩衝區。

extern qsemaphore g_qsemfreebytes; /控制環形緩衝區的空閒區(指生產者還沒填充資料的區域,或者消費者已經讀取過的區域)

extern qsemaphore g_qsemusedbytes; /控制環形緩衝區中的使用區(指生產者已填充資料,但消費者沒有讀取的區域)

7樓:匿名使用者

extern是宣告。

只有涉及多個檔案的全域性變數才需要使用extern比如,當檔案a,b都需要訪問乙個全域性變數val時,就要在檔案a,b中宣告如下。

extern int val;

如果只是在同一檔案中使用這個全域性變數就不需要extern了。

8樓:網友

如果要是你只編寫乙個c檔案的話,全域性變數在main 函式和其他定義的函式之外定義就行啦;

但如果涉及到兩個或者兩個以上的c檔案,定義全域性變數要用到extern

9樓:匿名使用者

對,必須用extern宣告,因為要涉及多個檔案,不用extern的話會導致編譯鏈結出現問題。不過不建議用全域性變數,物件導向要求低耦合。

10樓:淦海瑤

要是在乙個檔案當中,可以不用,要是在不同的檔案當中,那就必須用。

關於c++全域性變數和區域性變數的問題!!

11樓:匿名使用者

區域性變數:在乙個函式內部定義的變數就是區域性變數。

作用範圍:只侷限在定義它的本函式體之內,即只有在該函式體內才能使用該變數,而在此函式之外是不能使用它們的。

由於在不同函式體內定義的變數只在它所在的函式體內部有效,所以,不同函式體中可以定義相同名字的變數,但它們代表不同的物件,互不干擾。它們在記憶體中占用不同的記憶體單元。

函式的形參也是該函式的區域性變數,其他函式不能呼叫。

有效作用範圍:從定義該變數的位置開始到本程式檔案的結束。

***在同乙個檔案中,若全域性變數和區域性變數同名,則在區域性變數的作用範圍內,全域性變數不起作用。

見下圖:

12樓:倒霉熊

因為main函式中有 定義這個區域性變數n,所以 main中使用的n是區域性變數的n,而不是全域性變數的n。

c++中如何定義並新增全域性變數

13樓:匿名使用者

全域性變數的定義和普通變數的定義相同,只是在別的cpp檔案中使用前需要用extern修飾符宣告。

extern可置於變數或者函式前,以表示變數或者函式的定義在別的檔案中,提示編譯器遇到此變數或函式時,在其它模組中尋找其定義。另外,extern也可用來進行鏈結指定。

14樓:咴忻

在函式體外宣告的變數都是全域性變數。

c++中為什麼不能對全域性變數在函式外賦值?

15樓:

在函式外賦值 就變成了 函式外有了賦值語句。

c/c++ 程式結構不允許。

賦值語句要寫在子程式裡或主程式main()裡。

在函式外,你可以用初始化:

int i=1;

main()

16樓:網友

你要考慮到,在全域性中,語句的執行順序是沒***的,所以只能在宣告的時候定義。

假設允許這樣的賦值,那你覺得下面這個程式應該怎麼樣執行呢?

int i;

i=1;int main()

++i;

幾個c++全域性變數的問題

17樓:匿名使用者

這個不是作用於的原因,你定義的都是全域性變數,在標頭檔案中定義時當頭檔案被多個地方include時會定義多個變數,造成編譯器在鏈結時發現多個相同變數,所以報錯。

c c++ 中 main()函式內的變數 是屬於全域性變數還是區域性變數呢

18樓:sym_東方不敗

是區域性變數,任何函式內部的變數都是區域性的;

宣告全域性變數,要在標頭檔案後面定義;如果是多檔案,那麼沒有定義外部變數而要引用外部變數的檔案需要先用extern宣告。

19樓:匿名使用者

恩,區域性變數,用static修飾可變為全域性的,但static定義後就不能被修改了。

20樓:匿名使用者

塊語句內都是區域性變數,除非加上static修飾。

vb全域性變數,vb全域性變數可以在哪裡宣告

public x as integer 宣告在form1中。但是其它窗體引用的時候必須這樣引用。所以你題目有兩種改法。一 form2中x 1改成 二 新建模組,在模組中定義public x as integer 全域性變數,只能在模組中定義,你需要在工程中插入乙個模組,然後將。public x as...

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

函式是函式,變數時變數,沒有講函式可以成為全域性變數的說法 把函式宣告放在第二行,則在主函式裡面任意地點都能呼叫,而在主函式裡面宣告,那如果要呼叫這個函式,就必須在宣告之後,否則無法識別。做個假設 void main void test void fun 這段 你試試可以編譯通過嗎?不可以把?呵呵,...

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

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