兩者的區(qū)別只在于作用域和生存周期。main函數(shù)是一個進程的入口,此外,和別的函數(shù)無區(qū)別。
創(chuàng)新互聯(lián)專注于泰來企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站設(shè)計,成都商城網(wǎng)站開發(fā)。泰來網(wǎng)站建設(shè)公司,為泰來等地區(qū)提供建站服務(wù)。全流程按需求定制網(wǎng)站,專業(yè)設(shè)計,全程項目跟蹤,創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)
1、main函數(shù)里定義的是局部變量,只是在main函數(shù)里有效。
2、如果程序里有多個函數(shù),定義的全局變量在這些函數(shù)里都可以使用,而在main中定義的只能在main中使用,其他函數(shù)不可以直接調(diào)用。
3、題目中的兩個程序的區(qū)別只在于程序一的a和s變量是全局變量,程序二的a和s變量是局部變量。
4、全局變量是程序的各個函數(shù)都可以調(diào)用的,而局部變量只在函數(shù)內(nèi)部有效。
擴展資料:
全局變量是編程術(shù)語中的一種,源自于變量之分。
變量分為局部與全局,局部變量又可稱之為內(nèi)部變量。由某對象或某個函數(shù)所創(chuàng)建的變量通常都是局部變量,只能被內(nèi)部引用,而無法被其它對象或函數(shù)引用。
全局變量既可以是某對象函數(shù)創(chuàng)建,也可以是在本程序任何地方創(chuàng)建。全局變量是可以被本程序所有對象或函數(shù)引用。
局部變量(Local
variables)指在程序中只在特定過程或函數(shù)中可以訪問的變量。局部變量是相對于全局變量而言的。在C++、C#、Ruby這些面向?qū)ο笳Z言中,一般只使用局部變量。
面向?qū)ο缶幊淌乾F(xiàn)在普遍采用的是軟件開發(fā)方法,因此無需考慮是局部變量還是全局變量,說到變量,往往都是局部變量。
參考資料:百度百科-局部變量
參考資料:百度百科-全局變量
任何一種編程語言都離不開變量,特別是數(shù)據(jù)處理型程序,變量的使用非常頻繁,沒有變量參與程序甚至無法編制,即使編制運行后的意義也不大。變量之所以重要,是因為變量是編程語言中數(shù)據(jù)的符號標識和載體。
C語言是一種應(yīng)用廣泛的善于實現(xiàn)控制的語言,變量在C語言中的應(yīng)用更是靈活多變。那么變量究竟是什么呢?變量是內(nèi)存或寄存器中用一個標識符命名的存儲單元,可以用來存儲一個特定類型的數(shù)據(jù),并且數(shù)據(jù)的值在程序運行過程中可以進行修改??梢姡兞渴紫仁且粋€標識符或者名稱,就像一個客房的編號一樣,有了這個編號我們在交流中就可方便言表,否則,我們只可意會,那多不方便。為了方便,我們在給變量命名時,最好能符合大多數(shù)人的習慣,基本可以望名知義,便于交流和維護;其次,變量是唯一確定的對應(yīng)內(nèi)存若干存儲單元或者某個寄存器。這些是編譯器來保證的,用戶一般不用費心。
程序員一旦定義了變量,那么,變量就至少可為我們提供兩個信息:一是變量的地址,即就是,操作系統(tǒng)為變量在內(nèi)存中分配的若干內(nèi)存的首地址;二是變量的值,也就是,變量在內(nèi)存中所分配的那些內(nèi)存單元中所存放的數(shù)據(jù)。
由于程序的多樣需要,我們對變量也有各種各樣的要求,比如:變量的生命期,變量的初始狀態(tài),變量的有效區(qū)域,變量的開辟地和變量的開辟區(qū)域的大小等等;為了滿足這些要求,C語言的發(fā)明者就設(shè)置了以下變量:
1、 不同數(shù)據(jù)類型的變量;如:char cHar, int iTimes, flaot faverage;
2、 全局變量或者叫全程變量;
3、 局部變量;
4、 靜態(tài)變量: 靜態(tài)全局變量和靜態(tài)局部變量;關(guān)鍵詞:static
5、 寄存器變量;關(guān)鍵詞:register;
6、 外部變量: 關(guān)鍵詞:extern;
C語言中,變量在內(nèi)存中開辟地的大小由數(shù)據(jù)類型決定的,由于PC機中規(guī)定一個地址單元存一個字節(jié),不同的數(shù)據(jù)類型的變量,為其分配的地址單元數(shù)是不一樣的。C語言中除幾種基本的數(shù)據(jù)類型外用戶還可以自己定義所需要的數(shù)據(jù)類型:
1、 bool型 sizeof(bool): 1
2、 char型: sizeof(char): 1
3、 short型: sizeof(short): 2
4、 int型: sizeof(int): 4
5、 long型: sizeof(long): 4
6、 float型: sizeof(float): 4
7、 double型: sizeof(double): 8
8、 自定義型:如:
typedef struct tagMyData
{
char cHar;
int iTimes;
float faverage;
}MyDatap;
sizeof(MyDatap): 12
char szBuf[]="HELLO CC++!";
sizeof(szBuf): 13
局部變量和全局變量是相對而言的;如下:局部變量 int itmp;
int Get_Max( const int x, const int y, const int z )
{
int itmp;
if(x y) itmp = x;
else itmp = y;
if( itmp z ) return itmp;
else return z;
}
在函數(shù)內(nèi)部說明的變量為局部變量,只有在函數(shù)執(zhí)行時,局部變量才存在,當函數(shù)執(zhí)行完退出后,局部變量隨之消失。也就是,當函數(shù)執(zhí)行完退出后,原先在函數(shù)內(nèi)定義的變量現(xiàn)在不能用,這通常由編譯器保證,它會阻止編譯通過。也就是說,原來為那個局部變量分配的內(nèi)存,現(xiàn)在已經(jīng)不屬于它,它再無權(quán)訪問了。如要再使用這些內(nèi)存單元就必須從新定義變量來申請,只有分配給的變量才可訪問它。否則,就會出錯,如數(shù)組越界訪問。
與局部變量不同,全局變量在整個程序都是可見的,可在整個程序運行過程中,對于任何一個程序都是可用的。全局變量的說明的位置在所有函數(shù)之外,但可被任何一個函數(shù)使用,讀取或者寫入。如下:全局變量 int iCount, bool bForward;
int iCount; //全局變量;
bool bForward; //全局變量;
void add( void );
void dec( void );
void man(void )
{
while( iCount 1000 iCount -1000)
{
add( );
dec( );
printf("COUNT:%d;\n", iCount)
}
}
void add( void )
{
if( bForward ) iCount++;
}
void dec( void )
{
if(!bForward ) iCount--;
}
可見,全局變量非常方便不同函數(shù)間數(shù)據(jù)共享,同樣,任何函數(shù)在在使用數(shù)據(jù)時,都不敢保證數(shù)據(jù)是否已被修改。如果程序員無法保證這個,就盡量避免使用全局變量。
靜態(tài)變量是分配在存儲器中C程序所占據(jù)的數(shù)據(jù)段內(nèi), C程序運行的整個過程中一直保留,不會被別的變量占用。靜態(tài)變量可以定義成全局變量或局部變量,當定義為全局變量時,在它定義的程序的整個運行期間均存在并且保持原來的存儲單元位置不會改變。那么既然有了全局變量為什么還要定義全局靜態(tài)變量呢?看下邊的示例:
外部變量是在函數(shù)外部定義的全局變量,它的作用域是從變量的定義處開始,到本程序文件的結(jié)尾。在此作用域內(nèi),全局變量可為各個函數(shù)所引用。編譯時將外部變量分配在靜態(tài)存儲區(qū)。
有時要用extern來聲明外部變量,以擴展外部變量的作用域。 也可用static聲明外部變量,使該變量不能被其他文件引用。
用extern聲明外部變量
extern可省略不寫。
本文件里:在一個文件里,有不止一個函數(shù),外部變量在第一個函數(shù)后面定義。若用extern在第一個函數(shù)前聲明該變量則該變量可以在第一個函數(shù)中使用。
多個文件中:在其他文件中若想要用該文件中已聲明的變量,則在文件頭部聲明該變量,即可在文件中使用。
用static聲明外部變量
static聲明后該外部變量就只能在本文件中使用。
定義在函數(shù)體外部的變量叫全局變量,
要定義全局變量你只要把變量定義在
所有函數(shù)外部即可。
要注意的是,全局變量只對它定義位
置以下的函數(shù)可見。
#includestdio.h?
void?f1();
void?f2();
int?y=100;
int?main()
{
printf("%d\n\n",y);
//printf("%d\n",x);這不可以讀x,x對main()不可見?
f1();
f2();
return?0;
}
int?x;
void?f1()
{
x=200;
}?
void?f2()
{
printf("%d\n",x);
printf("%d\n",y);
}
1、首先,我們可以在函數(shù)外面定義變量,就是全局變量。
2、局部變量可以與全局變量同樣命名。
3、但是優(yōu)先級是局部變量優(yōu)先。
4、但是局部變量的生命周期是整個結(jié)構(gòu)內(nèi)。
5、全局變量是整個程序結(jié)束,才釋放。
6、我們也可以為變量加上修飾符。
本文名稱:c語言函數(shù)外聲明變量,c語言聲明外部函數(shù)
轉(zhuǎn)載來源:http://vcdvsql.cn/article2/hshsic.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供建站公司、ChatGPT、網(wǎng)站營銷、用戶體驗、手機網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)