C語(yǔ)言結(jié)構(gòu)體 共同體 枚舉

語(yǔ)言------結(jié)構(gòu)體 ? ?枚舉學(xué)習(xí),有需要的朋友可以參考下。

結(jié)構(gòu)體 ?枚舉

1.局部變量:

>定義.在代碼塊內(nèi)部定義的變量都是局部變量,包括形參

>作用域.從定義變量的那一行開(kāi)始,一直到代碼塊結(jié)束

>存放位置.存放在棧中

>生命周期.執(zhí)行到定義變量的那一行開(kāi)始分配存儲(chǔ)空間,代碼塊結(jié)束后就釋放

>特點(diǎn):沒(méi)有固定的初始化值

2.全局變量:

>定義.在函數(shù)外定義的變量

>.作用域.從定義變量的那一行開(kāi)始,一直到文件末尾

>存放位置.靜態(tài)區(qū)

>生命周期.程序一啟動(dòng)就會(huì)分配存儲(chǔ)空間,知道程序結(jié)束才會(huì)釋放

特點(diǎn):默認(rèn)初始化值是0

結(jié)構(gòu)體基本概念

變量類(lèi)型變量名;

結(jié)構(gòu)體變量類(lèi)型變量名;

想定義結(jié)構(gòu)體變量分為兩部:

1.定義結(jié)構(gòu)體類(lèi)型

2.通過(guò)結(jié)構(gòu)體類(lèi)型定義結(jié)構(gòu)體變量

struct結(jié)構(gòu)體類(lèi)型名稱(chēng)

{

成員(屬性)

}

給結(jié)構(gòu)體賦值要通過(guò).的方式賦值

注意點(diǎn)

,只能在定義結(jié)構(gòu)體變量的同時(shí)進(jìn)行初始化,不能先定義結(jié)構(gòu)體變量再初始化

結(jié)構(gòu)體內(nèi)存分析

1.定義結(jié)構(gòu)體類(lèi)型,

定義結(jié)構(gòu)體類(lèi)型的時(shí)候不會(huì)為結(jié)構(gòu)體類(lèi)型分配存儲(chǔ)空間

struct Date

{

int year; //年

int month; //月

int day; //日

};

2.定義結(jié)構(gòu)體變量

只有在定義結(jié)構(gòu)體變量的時(shí)候才會(huì)真正的分配存儲(chǔ)空間

結(jié)構(gòu)變量存儲(chǔ)值也數(shù)組也一樣,也是從小到大的存,

也就是說(shuō)從第一個(gè)成員開(kāi)始存放

結(jié)構(gòu)體變量的地址就是它第一個(gè)成員的地址

注意:結(jié)構(gòu)體在分配存儲(chǔ)空間的時(shí)候有一個(gè)補(bǔ)齊算法

結(jié)構(gòu)體所占存儲(chǔ)空間的大小,必須是占用內(nèi)存最大成員的字節(jié)數(shù)的倍數(shù)

結(jié)構(gòu)體變量的定義方式:

1.第一種方式:先定義結(jié)構(gòu)體類(lèi)型,再定義結(jié)構(gòu)體變量

1.定義結(jié)構(gòu)體類(lèi)型

struct Student

{

int age;

char *name;

};

2.通過(guò)結(jié)構(gòu)體類(lèi)型定義結(jié)構(gòu)體變量

struct Student stu;

2.第二種定義方式:定義結(jié)構(gòu)體類(lèi)型的同時(shí)定義結(jié)構(gòu)體變量

struct Student

{

int age;

char *name;

} stu;

struct Student stu2;

3.第三種方式:定義結(jié)構(gòu)體類(lèi)型的同時(shí)定義結(jié)構(gòu)體變量,并且這個(gè)結(jié)構(gòu)體類(lèi)型沒(méi)有名稱(chēng)

struct

{

intage;

char*name;

} stu;

缺點(diǎn):不能復(fù)用

結(jié)構(gòu)體類(lèi)型的作用域:

在函數(shù)外定義的結(jié)構(gòu)體類(lèi)型的作用域是從定義的那一行開(kāi)始一直到文件末尾

在代碼塊中定義的結(jié)構(gòu)體類(lèi)型的作用域和局部變量的作用域相同

結(jié)構(gòu)體類(lèi)型的作用域:

> 1.定義在函數(shù)外面:全局有效(從定義的那一行開(kāi)始一直到文件末尾)

> 2.定義在函數(shù)里面:局部有效(從定義的那一行開(kāi)始一直到函數(shù)結(jié)束)

結(jié)構(gòu)體指針

變量類(lèi)型*變量名;

struct Student *sp;

sp = &stu;

*sp == stu

stu.age

注意點(diǎn):.的優(yōu)先級(jí)要比*的優(yōu)先級(jí)高,所以要先用()提高*的優(yōu)先級(jí)

(*sp).age = 66;

當(dāng)利用指針指向結(jié)構(gòu)體變量后的幾種訪問(wèn)方式

1.變量名.成員 stu.age;

2.(*指針變量名).成員; ?(*sp).age;

3.指針變量名->成員; ? sp->age;

結(jié)構(gòu)體嵌套定義:

定義結(jié)構(gòu)體類(lèi)型的時(shí)候,類(lèi)型當(dāng)中的成員還是一個(gè)結(jié)構(gòu)體

如果結(jié)構(gòu)體中的成員還是結(jié)構(gòu)體的時(shí)候可以通過(guò).逐層訪問(wèn)

枚舉

枚舉是一種基本數(shù)據(jù)類(lèi)型

當(dāng)某一個(gè)變量只有固定的幾個(gè)取值的時(shí)候可以定義枚舉變量

想定義枚舉變量必須先定義枚舉類(lèi)型,定義枚舉類(lèi)型的作用是告訴系統(tǒng)枚舉有哪些取值

1.先定義枚舉類(lèi)型

enum枚舉名稱(chēng)

{

取值

}

枚舉的本質(zhì)就是整型

枚舉的取值默認(rèn)情況是從0開(kāi)始依次遞增

2.通過(guò)枚舉類(lèi)型定義枚舉變量

雖然表面上看上去只能給枚舉變量賦值我們定義的幾個(gè)固定的值,

但是枚舉變量的本質(zhì)就是一個(gè)整型變量所以也可以賦值其它整型常量

數(shù)據(jù)類(lèi)型總結(jié)

1.基本數(shù)據(jù)類(lèi)型

整型:

int 4個(gè)字節(jié)%d

short 2個(gè)字節(jié)%hd

long 8個(gè)字節(jié)%ld

long long 8個(gè)字節(jié)%lld

unsigned 4個(gè)字節(jié)0和正數(shù)0~2(32)-1; %u

signed 4個(gè)字節(jié)正數(shù)負(fù)數(shù)和0 -2(31)~2(31)-1

字符型:

char 1個(gè)字節(jié)%c

存儲(chǔ)細(xì)節(jié): ASCII值0~127

浮點(diǎn)型:

float 4個(gè)字節(jié)%f

double 8個(gè)字節(jié)%lf

枚舉類(lèi)型:

> 1.先定義枚舉類(lèi)型,再通過(guò)枚舉類(lèi)型定義枚舉變量

> 2.定義格式: enum枚舉類(lèi)型名稱(chēng){取值}; ?enum枚舉類(lèi)型名稱(chēng)變量名稱(chēng);

> 3.枚舉的本質(zhì)就是整型

2.構(gòu)造類(lèi)型

數(shù)組:

只能存放同一種類(lèi)型的數(shù)據(jù)

元素類(lèi)型變量名[元素個(gè)數(shù)];

結(jié)構(gòu)體:

可以存放不同類(lèi)型的數(shù)據(jù)

*定義結(jié)構(gòu)體類(lèi)型 struct結(jié)構(gòu)體類(lèi)型名稱(chēng){成員;};

*通過(guò)結(jié)構(gòu)體類(lèi)型定義結(jié)構(gòu)體變量 struct結(jié)構(gòu)體類(lèi)型名稱(chēng)變量名稱(chēng);

3.指針類(lèi)型

變量類(lèi)型*變量名稱(chēng);

指針類(lèi)型的作用:

1.定義的時(shí)候是什么類(lèi)型將來(lái)就只能指向什么類(lèi)型的數(shù)據(jù)(保存什么類(lèi)型的變量地址)

2.指針取值的時(shí)候會(huì)根據(jù)TA的類(lèi)型取值(是什么類(lèi)型就取多少個(gè)字節(jié))

4.空類(lèi)型

void

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容