真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

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

.寫在最前

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

在夏邑等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎ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)鍵字
  • 對(duì)局部變量的作用

    • 延長局部變量的生命周期,從程序啟動(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); 
}
  • 對(duì)全局變量的作用

    • 全局變量分類:

      • 內(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)鍵字
  • 對(duì)局部變量的作用

    • 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;
}
  • 對(duì)全局變量的作用
    • 聲明一個(gè)全局變量, 代表告訴編譯器我在其它地方定義了這個(gè)變量, 你可以放心使用
#includeint main()
{extern int num; // 聲明我們有名稱叫做num變量
    num = 998; // 使用時(shí)已經(jīng)有對(duì)應(yīng)的存儲(chǔ)空間
    printf("num = %i\n", num);
    return 0;
}
int num; // 全局變量, 程序啟動(dòng)就會(huì)分配存儲(chǔ)空間
static與extern對(duì)函數(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級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購,新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧


分享名稱:C語言tips-生存期和存儲(chǔ)類型-創(chuàng)新互聯(lián)
當(dāng)前網(wǎng)址:http://weahome.cn/article/jdose.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部