extern宣告語句不會 再次 給變數分配儲存空間

2022-08-24 05:27:10 字數 620 閱讀 7176

[ 測試用例 ]

#include extern char c;

extern int i;

int main()

[ 期望輸出 ]

兩個一樣的值

[ 實際輸出 ]

如果沒有分配儲存空間,那麼為什麼結果卻輸出了變數所占用的空間大小。

[ a ]

乙個變數得宣告,肯定是會分配空間的,不分配那在哪儲存,又在哪取值呢?其實我們說"變數的宣告是不會再次分配空間的",這是沒有問題的吧?這個extern其實也是一樣,也是宣告(),也不會再次分配空間。 一般的(是一般的),定義的變數都會獲得分配空間的機會,但是extern其實只是起到宣告的作用,不是定義,只是告訴編譯器,這個變數不是我(本檔案)定義的,我只是用別人(其他的檔案,一般在.c檔案)的的而已。所以變數的空間是別人定義的時候分配的,不是我給的,我只是用別人的而已。 (感謝的補充說明)

extern宣告跨檔案變數

file dog.h class dog int leg static int num1 定義靜態成員變數 file dog.cpp include dog.h int num2 static int num3 定義靜態成員變數,num3僅限於本檔案使用 file main.cpp include ...

c 變數宣告extern說明

當使用extern關鍵字修飾變數 未初始化 表示變數宣告。當在另乙個檔案中,為extern關鍵字修飾的變數賦值時,表示變數定義。宣告在標頭檔案裡面,定義的檔案裡面包含有該宣告的標頭檔案。header.件如下 ifndef header h define header h 定義global x變數 在...

C語言extern宣告辨析

1 基本解釋 extern可以置於變數或者函式 前,以標示變數或者函式 的定義在別的檔案中,提示編譯器遇到此變數和函式 時在其他模組中尋找其定義。另外,extern也可用來進行鏈結指定。2 問題 extern 變數 在乙個原始檔裡定義了乙個陣列 char a 6 在另外乙個檔案裡用下列語句進行了宣告...