中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

C語言tips-作用域和鏈接屬性-創(chuàng)新互聯(lián)

.寫在最前

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

創(chuàng)新互聯(lián)建站是一家集網(wǎng)站建設(shè),塔什庫爾干塔吉克企業(yè)網(wǎng)站建設(shè),塔什庫爾干塔吉克品牌網(wǎng)站建設(shè),網(wǎng)站定制,塔什庫爾干塔吉克網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,塔什庫爾干塔吉克網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。

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

1. 作用域
  • 當(dāng)變量被定義在程序的不同位置時,它的作用范圍是不一樣的,這個作業(yè)范圍就是我們所說的作用域
  • c語言編譯器可以確認(rèn)4鐘不同類型的作用域
    • 代碼塊作用域
    • 文件作用域
    • 原型作用域
    • 函數(shù)作用域
1.1 代碼塊作用域(block scope)
  • c語言常見的代碼塊類型:函數(shù)(或者其他大括號的流程)
  • 在代碼塊中定義的變量,具有代碼塊作用。作用范圍是從變量定義的位置開始,到標(biāo)志該代碼塊結(jié)束的右大括號處

舉例:

#includeint main(int argc, char* argv[])
{int i = 100;
    {int i = 200;
        {int i = 300;
            printf("%d\n", i);
        }
        {int i = 400;
            printf("%d\n", i);
        }
        printf("%d\n", i);
    }
    printf("%d\n", i);
    return 0;
}

輸出結(jié)果:

300
400
200
100

1.2 文件作用域(file scope)
  • 任何在代碼塊之外聲明的標(biāo)識符都具有文件作用域,作用范圍是從它們的聲明位置開始,到文件的結(jié)尾處都是可以訪問的。

舉例:

#includevoid func(void);

int main(int argc, char* argv[])
{extern int count;
   func();
   count++;
    printf("count = %d\n", count);
   return 0;
}

int count;
void func(void)
{count++;
    printf("func's count = %d\n", count);
}
1.3 原型作用域(prototype scope)
  • 原型作用域只適用于那些在函數(shù)原型中聲明的參數(shù)名。函數(shù)在聲明的時候可以不寫參數(shù)的名字(但參數(shù)類型是必須要寫上的),其實函數(shù)原型的參數(shù)名還可以隨便寫一個名字,不必與形式參數(shù)相匹配(當(dāng)然,這樣做沒有任何意義!)。

舉例:

void func(int a, int b, int c);
void func(int d, int e, int f)
{...
}

即聲明的形參名字可以和函數(shù)定義的形參名字不一樣

1.4 函數(shù)作用域(function scope)

函數(shù)作用域只適用于goto語句的標(biāo)簽,作用將goto語句的標(biāo)簽眼制在同一個函數(shù)內(nèi)部,以及防止出現(xiàn)重名標(biāo)簽。

2. 鏈接屬性

鏈接屬性主要分為以下三大類

  • external(外部的)

    多個文件中聲明的同名標(biāo)識符表示同一個實體

  • internal(內(nèi)部的)
    單個文件中聲明的同名標(biāo)識符表示同一個實體

  • none(無)
    聲明的同名標(biāo)識符被當(dāng)作獨立不同的實體

只有具備文件作用域(函數(shù)名和全局變量)的標(biāo)識符才能擁有external或internal的鏈接屬性,其他作用域的標(biāo)識符都是none屬性

默認(rèn)情況下,具備文件作用城的標(biāo)識符擁有external屬性。也就是說該標(biāo)識符允許跨文件訪問。對于external屬性的標(biāo)識符,無論在不同文件中聲明多少次,表示的都是同一個實體。

例子(利用extern進(jìn)行多文件變量共享):

main.c

#includevoid a();
void b();
int count = 0;

int main(int argc, char* argv[])
{a();
    b();
    printf("%d", ++count);
}

a.c

//
// Created by zh006 on 2022/11/26.
//

extern count;

void a()
{count++;
}

b.c

//
// Created by zh006 on 2022/11/26.
//

extern count;
void b()
{count++;
}

cmakelist.txt

cmake_minimum_required(VERSION 3.21)
project(c C)

set(CMAKE_C_STANDARD 99)

add_executable(c main.c a.c b.c)

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

當(dāng)前名稱:C語言tips-作用域和鏈接屬性-創(chuàng)新互聯(lián)
鏈接分享:http://www.rwnh.cn/article42/cegchc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作、網(wǎng)站排名、營銷型網(wǎng)站建設(shè)、網(wǎng)站制作網(wǎng)站維護、網(wǎng)站內(nèi)鏈

廣告

聲明:本網(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)

h5響應(yīng)式網(wǎng)站建設(shè)
勐海县| 万荣县| 岑巩县| 明光市| 浑源县| 惠来县| 闽侯县| 射洪县| 峨边| 大石桥市| 光泽县| 兴山县| 凌云县| 玉树县| 广灵县| 鄂伦春自治旗| 楚雄市| 西贡区| 鲜城| 邹平县| 光泽县| 防城港市| 新建县| 宕昌县| 金乡县| 津南区| 磐石市| 英山县| 蒙自县| 蕉岭县| 上杭县| 高青县| 泗洪县| 嘉义县| 锡林郭勒盟| 嘉兴市| 保德县| 林甸县| 浦东新区| 巧家县| 盐城市|