内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

C語言tips-生存期和存儲(chǔ)類型-創(chuàng)新互聯(lián)

.寫在最前

最近因?yàn)楣ぷ餍枰_始重新學(xué)c語言,越學(xué)越發(fā)現(xiàn)c語言深不可測,當(dāng)初用python輕輕松松處理的一些數(shù)據(jù),但是c語言寫起來卻異常的復(fù)雜,這個(gè)板塊就記錄一下我的c語言復(fù)習(xí)之路

在夏邑等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供網(wǎng)站制作、網(wǎng)站建設(shè) 網(wǎng)站設(shè)計(jì)制作按需定制,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計(jì),成都全網(wǎng)營銷推廣,外貿(mào)網(wǎng)站建設(shè),夏邑網(wǎng)站建設(shè)費(fèi)用合理。

本節(jié)tips來自小甲魚的c語言課程的演示筆記小甲魚b站視頻

1. 生存期

C語言的變量擁有兩種生存期

  • 靜態(tài)存儲(chǔ)期(static storage duration)
  • 自動(dòng)存儲(chǔ)期(automatic storage duration)
    具有文件作用域的變量屬于靜態(tài)存儲(chǔ)期,函數(shù)也屬于靜態(tài)存儲(chǔ)期。屬于靜態(tài)存儲(chǔ)期的變量在程序執(zhí)行期間將一直占據(jù)存儲(chǔ)空間,直到程序關(guān)閉才釋放。
2.存儲(chǔ)類型 auto關(guān)鍵字
  • 只能修飾局部變量, 局部變量如果沒有其它修飾符, 默認(rèn)就是auto的
  • 特點(diǎn): 隨用隨開, 用完即銷
auto int num; // 等價(jià)于 int num;
register關(guān)鍵字
  • 只能修飾局部變量, 原則上將內(nèi)存中變量提升到CPU寄存器中存儲(chǔ), 這樣訪問速度會(huì)更快
  • 但是由于CPU寄存器數(shù)量相當(dāng)有限, 通常不同平臺(tái)和編譯器在優(yōu)化階段會(huì)自動(dòng)轉(zhuǎn)換為auto
register int num;
static關(guān)鍵字
  • 對局部變量的作用

    • 延長局部變量的生命周期,從程序啟動(dòng)到程序退出,但是它并沒有改變變量的作用域

    • 定義變量的代碼在整個(gè)程序運(yùn)行期間僅僅會(huì)執(zhí)行一次

#includevoid test();
int main()
{test();
    test();
    test();

    return 0;
}
void test(){static int num = 0; // 局部變量
    num++; 
    // 如果不加static輸出 1 1 1
    // 如果添加static輸出 1 2 3
    printf("num = %i\n", num); 
}
  • 對全局變量的作用

    • 全局變量分類:

      • 內(nèi)部變量:只能在本文件中訪問的變量

      • 外部變量:可以在其他文件中訪問的變量,默認(rèn)所有全局變量都是外部變量

    • 默認(rèn)情況下多個(gè)同名的全局變量共享一塊空間, 這樣會(huì)導(dǎo)致全局變量污染問題

    • 如果想讓某個(gè)全局變量只在某個(gè)文件中使用, 并且不和其他文件中同名全局變量共享同一塊存儲(chǔ)空間, 那么就可以使用static

// A文件中的代碼
int num; // 和B文件中的num共享
void test(){printf("ds.c中的 num = %i\n", num);
}
// B文件中的代碼
#include#include "ds.h"

int num; // 和A文件中的num共享
int main()
{num = 666;
    test(); // test中輸出666
    return 0;
}
// A文件中的代碼
static int num; // 不和B文件中的num共享
void test(){printf("ds.c中的 num = %i\n", num);
}
// B文件中的代碼
#include#include "ds.h"

int num; // 不和A文件中的num共享
int main()
{num = 666;
    test(); // test中輸出0
    return 0;
}

extern關(guān)鍵字
  • 對局部變量的作用

    • extern不能用于局部變量

    • extern代表聲明一個(gè)變量, 而不是定義一個(gè)變量, 變量只有定義才會(huì)開辟存儲(chǔ)空間

    • 所以如果是局部變量, 雖然提前聲明有某個(gè)局部變量, 但是局部變量只有執(zhí)行到才會(huì)分配存儲(chǔ)空間

#includeint main()
{extern int num;
    num = 998; // 使用時(shí)并沒有存儲(chǔ)空間可用, 所以聲明了也沒用
    int num; // 這里才會(huì)開辟
    printf("num = %i\n", num);
    return 0;
}
  • 對全局變量的作用
    • 聲明一個(gè)全局變量, 代表告訴編譯器我在其它地方定義了這個(gè)變量, 你可以放心使用
#includeint main()
{extern int num; // 聲明我們有名稱叫做num變量
    num = 998; // 使用時(shí)已經(jīng)有對應(yīng)的存儲(chǔ)空間
    printf("num = %i\n", num);
    return 0;
}
int num; // 全局變量, 程序啟動(dòng)就會(huì)分配存儲(chǔ)空間
static與extern對函數(shù)的作用

內(nèi)部函數(shù):只能在本文件中訪問的函數(shù)

外部函數(shù):可以在本文件中以及其他的文件中訪問的函數(shù)

默認(rèn)情況下所有的函數(shù)都是外部函數(shù)

  • static 作用:聲明一個(gè)內(nèi)部函數(shù)
static int sum(int num1,int num2);

定義一個(gè)內(nèi)部函數(shù)

static int sum(int num1,int num2)
{return num1 + num2;
}
  • extern作用:聲明一個(gè)外部函數(shù)
extern int sum(int num1,int num2);

定義一個(gè)外部函數(shù)

extern int sum(int num1,int num2)
{return num1 + num2;
}

注意點(diǎn):

  • 由于默認(rèn)情況下所有的函數(shù)都是外部函數(shù), 所以extern一般會(huì)省略
  • 如果只有函數(shù)聲明添加了static與extern, 而定義中沒有添加static與extern, 那么無效
const關(guān)鍵字

參考const關(guān)鍵字的作用

你是否還在尋找穩(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)查看詳情吧

網(wǎng)站題目:C語言tips-生存期和存儲(chǔ)類型-創(chuàng)新互聯(lián)
本文路徑:http://www.rwnh.cn/article34/jdose.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站制作、網(wǎng)站排名、網(wǎng)站改版、網(wǎng)站策劃虛擬主機(jī)、網(wǎng)頁設(shè)計(jì)公司

廣告

聲明:本網(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)站托管運(yùn)營
日喀则市| 阳谷县| 伊宁市| 庆城县| 犍为县| 聂拉木县| 阿鲁科尔沁旗| 德兴市| 望江县| 湘潭县| 衡水市| 文昌市| 长海县| 锦屏县| 赤峰市| 镇平县| 安新县| 丰顺县| 寿阳县| 阿瓦提县| 叶城县| 临江市| 探索| 司法| 凤冈县| 夹江县| 磴口县| 凤城市| 古交市| 陕西省| 达日县| 佳木斯市| 郯城县| 盐源县| 扎囊县| 疏附县| 江永县| 绥阳县| 密山市| 得荣县| 东乡县|