extern 關(guān)鍵字
?extern 用在全局變量或函數(shù)的聲明前,用來說明“此變量/函數(shù)是在別處定義的,要在此處引用。
?什么是定義,什么是聲明?
? ? ? 什么是定義:所謂的定義就是為這個(gè)變量分配一塊內(nèi)存并給它取上一個(gè)名字,這個(gè)名字就是我們經(jīng)常所說的變量名。但注意,這個(gè)名字一旦和這塊內(nèi)存匹配起來,它們就同生共死,終生不離不棄,并且這塊內(nèi)存的位置也不能被改變。一個(gè)變量在一定的區(qū)域內(nèi)(比如函數(shù)內(nèi),全局等)只能被定義一次,如果定義多次,編譯器會提示你重復(fù)定義同一個(gè)變量或?qū)ο蟆?br>什么是聲明: 有兩重含義,如下:
第一重含義: 告訴編譯器,這個(gè)名字已經(jīng)匹配到一塊內(nèi)存上了。
第二重含義: 告訴編譯器,我這個(gè)名字我先預(yù)定了,別的地方再也不能用它來作為變量名。記住,定義和聲明最重要的區(qū)別: 定義創(chuàng)建了對象并為這個(gè)對象一塊內(nèi)存,而聲明的時(shí)候是沒有分配內(nèi)存空間的。
聲明是不開辟內(nèi)存的,定義是開辟內(nèi)存的。
?文章來源地址http://www.zghlxwxcb.cn/news/detail-469072.html
外部變量(全局變量)extern----全局靜態(tài)存儲區(qū)
標(biāo)準(zhǔn)定義格式:extern 類型名 變量名;
extern int i; //是聲明,不是定義,沒有分配內(nèi)存 int i; //是定義
?示例1:
extern 可以聲明一個(gè)變量,使得該變量是來自其他文件的變量在本文件可以被訪問。
比如:創(chuàng)建兩個(gè)文件 test.c 和 main.c文件;
在test.c文件中定義一個(gè)全局變量:
//test.c
int i = 20; //定義一個(gè)全局變量
在main.c文件,聲明變量 i;
main.c文件
# include<stdio.h>
extern int i; //聲明變量i,當(dāng)編譯鏈接時(shí)候,main.c文件就可以訪問到test.c文件的i的值了;
int main()
{
printf("%d",i);
return 0;
}
這樣我們就可以跨文件(test.c),在本文件(main.c)訪問這個(gè)變量了;
?示例2:
示例三:
文章來源:http://www.zghlxwxcb.cn/news/detail-469072.html
?
到了這里,關(guān)于C語言-外部關(guān)鍵字extern的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!