欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

C語言全局變量基礎(chǔ)學(xué)習(xí)-創(chuàng)新互聯(lián)

??通過學(xué)習(xí),我對全局變量以及靜態(tài)本地變量有個(gè)簡單基礎(chǔ)的認(rèn)識。以下是我的學(xué)習(xí)筆記,與大家分享,如果有不妥的地方,歡迎大家在評論區(qū)指出來,一起學(xué)習(xí)進(jìn)步!!!

創(chuàng)新互聯(lián)建站專注于企業(yè)成都全網(wǎng)營銷推廣、網(wǎng)站重做改版、安丘網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5響應(yīng)式網(wǎng)站購物商城網(wǎng)站建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為安丘等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。文章目錄
  • 1.全局變量
    • 1.1定義
    • 1.2生存期與作用域
    • 1.3全局變量的初始化
    • 1.4被隱藏的全局變量
    • 1.5局部變量
  • 2.靜態(tài)本地變量
    • 2.1定義
    • 2.2生存期與作用域
    • 2.3實(shí)際上靜態(tài)本地變量是一種特殊的全局變量
  • 3.返回指針的函數(shù)
    • 3.1返回本地變量的指針
    • 3.2返回全局變量和靜態(tài)本地變量的地址是安全的
    • 3.3返回malloc的指針
    • 3.4最好的方法是 返回傳入的指針
  • 4.全局變量tips
    • 4.1不要使用全局變量的來傳遞函數(shù)的參數(shù)和結(jié)果
    • 4.2盡量避免使用全局變量

1.全局變量 1.1定義

??定義在函數(shù)外面的變量。

1.2生存期與作用域

??具有全局(任何函數(shù)內(nèi)部)的生存期和作用域。
??代碼測試

#include#include//定義一個(gè)全局變量
int gAll=12;

void f(void);

int main()
{printf("in %s gAll=%d\n", __func__,gAll);
    f();
    f();
    printf("agn in %s gAll=%d\n", __func__,gAll);
    return 0;
 } 

void f(void)
{printf("in %s gAll=%d\n", __func__,gAll);
    gAll+=2;
    printf("agn in %s gAll=%d\n", __func__,gAll);
}

??輸出結(jié)果

in main gAll=12
in f gAll=12
agn in f gAll=14
in f gAll=14
agn in f gAll=16
agn in main gAll=16

??注意
??輸出所在函數(shù)的函數(shù)名用 func ,
??前后是 2個(gè)英文半角狀態(tài)的“_”。

1.3全局變量的初始化

??自動(dòng):沒有初始化的會(huì)自動(dòng)初始化為0,指針初始化為NULL;
??人為:用編譯時(shí)刻已知的值對全局變量初始化,在main函數(shù)之前初始化。

1.4被隱藏的全局變量

??如果函數(shù)內(nèi)部有與全局變量同名的變量,則全局被隱藏。
??小范圍與大范圍定義了一樣的變量名,大范圍變量被隱藏,執(zhí)行小范圍的變量。
??代碼測試

#include#includeint gAll=12;    //定義全局變量,大范圍

void f(void);

int main()
{printf("in %s gAll=%d\n", __func__,gAll);
    f();
    printf("agn in %s gAll=%d\n", __func__,gAll);
    return 0;
 } 

void f(void)
{int gAll=1;   //函數(shù)內(nèi)部定義同名的本地變量,小范圍
    printf("in %s gAll=%d\n", __func__,gAll);
    gAll+=2;
    printf("agn in %s gAll=%d\n", __func__,gAll);
}

??輸出結(jié)果

in main gAll=12 ?? ? //全局變量
in f gAll=1 ?? ? ?? //函數(shù)內(nèi)部的本地變量
agn in f gAll=3 ? ? ?? //函數(shù)內(nèi)部的本地變量
agn in main gAll=12 ?? //重新返回main,全局變量取消隱藏

1.5局部變量

(1)局部變量只能在定義的區(qū)域以及他的子區(qū)域中使用;
(2)包括:一個(gè)函數(shù)內(nèi)部定義的函數(shù)、函數(shù)形參、復(fù)合語句即{ }大括號中的變量;
(3)同一個(gè)區(qū)域不能定義相同的名字;
(4)不同區(qū)域定義相同的名字變量,在本質(zhì)沒有任何關(guān)系。

2.靜態(tài)本地變量 2.1定義

在本地變量定義時(shí)前面加上static修飾符就變成了靜態(tài)本地變量。

2.2生存期與作用域

??生存期:全局,當(dāng)函數(shù)離開時(shí),靜態(tài)本地變量會(huì)繼續(xù)保持他最后的值;
?? 作用域:定義函數(shù)內(nèi)部;(static的意思是局部區(qū)域訪問)
?? 初始化:靜態(tài)本地變量的初始化只會(huì)在第一次進(jìn)入這個(gè)函數(shù)的時(shí)候做,以后進(jìn)入函數(shù)時(shí),會(huì)保持上次離開函數(shù)的值。
??代碼測試

int gAll=12;

void f(void);

int main()
{f();
    f();
    f(); 
    return 0;
 } 

void f(void)
{static int all=1;
    printf("in %s all=%d\n", __func__,all);
    all++;
    printf("in %s all=%d\n", __func__,all);
}

??輸出結(jié)果

in f all=1
in f all=2
in f all=2
in f all=3
in f all=3
in f all=4

2.3實(shí)際上靜態(tài)本地變量是一種特殊的全局變量

??靜態(tài)本地變量和全局變量的地址挨著,即他們兩個(gè)在內(nèi)存中放在一起,在內(nèi)存相同的區(qū)域
??代碼測試

#include#includeint gAll=12;

void f(void);

int main()
{f();
    return 0;
 } 

void f(void)
{static int all=1;
    int b=2;
    printf("in %s &gAll=%p\n", __func__,&gAll);
    printf("in %s &all=%p\n", __func__,&all);
    printf("in %s &b=%p\n", __func__,&b);
}

??輸出結(jié)果

in f &gAll=0000000000403010
in f &all=0000000000403014?//全局變量的地址 挨著 靜態(tài)本地變量的地址
in f &b=000000000062FDEC

3.返回指針的函數(shù) 3.1返回本地變量的指針

?? 這種做法是危險(xiǎn)的,因?yàn)楫?dāng)你離開這個(gè)函數(shù),本地變量的空間會(huì)被free掉,當(dāng)定義下一個(gè)變量的時(shí)候,會(huì)直接放在這個(gè)內(nèi)存空間里面,所以可能還是原來的值,也可能不是原來的值。
??代碼測試

#include#includeint *g(void);
void f(void);

int main()
{int *p=g();
    printf("*p=%d\n",*p);
    f();
    printf("*p=%d\n",*p);
    return 0;
 } 

int *g(void)
{int i=1;
    return &i;
}

void f(void)
{int k=12;
    printf(" k=%d\n",k);
}

??輸出結(jié)果

*p=1
k=12
*p=12 原來地址被后來定義的k占用

3.2返回全局變量和靜態(tài)本地變量的地址是安全的

??他們的指針和函數(shù)沒有關(guān)系

3.3返回malloc的指針

??內(nèi)存是安全的,但是容易出現(xiàn)問題

3.4最好的方法是 返回傳入的指針 4.全局變量tips 4.1不要使用全局變量的來傳遞函數(shù)的參數(shù)和結(jié)果 4.2盡量避免使用全局變量

?? “豐田汽車的案子”代碼中使用了大量的全局變量,無法維護(hù)

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧

當(dāng)前題目:C語言全局變量基礎(chǔ)學(xué)習(xí)-創(chuàng)新互聯(lián)
當(dāng)前路徑:http://www.chinadenli.net/article38/dososp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設(shè)企業(yè)網(wǎng)站制作網(wǎng)站制作定制網(wǎng)站自適應(yīng)網(wǎng)站網(wǎng)站改版

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)