国产肉体XXXX裸体137大胆,国产成人久久精品流白浆,国产乱子伦视频在线观看,无码中文字幕免费一区二区三区 国产成人手机在线-午夜国产精品无套-swag国产精品-国产毛片久久国产

博客專(zhuān)欄

EEPW首頁(yè) > 博客 > Linux C - C基礎(chǔ)篇七(指針高級(jí)用法)

Linux C - C基礎(chǔ)篇七(指針高級(jí)用法)

發(fā)布人:嵌入式Linux 時(shí)間:2023-01-12 來(lái)源:工程師 發(fā)布文章
指針與結(jié)構(gòu)體

先簡(jiǎn)單介紹下結(jié)構(gòu)體

C語(yǔ)言中結(jié)構(gòu)體(Struct)從本質(zhì)上講是一種自定義的數(shù)據(jù)類(lèi)型,只不過(guò)這種數(shù)據(jù)類(lèi)型比較復(fù)雜,是由 int、char、float 等基本類(lèi)型組成的。由于結(jié)構(gòu)體將一組相關(guān)的變量看作一個(gè)整體而不是各自獨(dú)立的實(shí)體,因此結(jié)構(gòu)體有助于組織復(fù)雜的數(shù)據(jù),特別是在大型的程序中,結(jié)構(gòu)體非常常見(jiàn)。聲明一個(gè)結(jié)構(gòu)體的方式如下:

struct student {

char name[16];

int age;

int score;

};

如下,定義一個(gè)結(jié)構(gòu)體變量,并通過(guò)"結(jié)構(gòu)體變量名字.成員名字"的方式訪問(wèn)結(jié)構(gòu)體變量里面的成員:

struct student stu;

stu.name = "張三";

stu.age = 15;

int a = stu.score;

結(jié)構(gòu)體指針變量:結(jié)構(gòu)體指針變量是指向結(jié)構(gòu)體的指針,以上面的結(jié)構(gòu)體為例,可以這樣定義如下的結(jié)構(gòu)指針變量:

struct student *stu1;

訪問(wèn)指針變量里面的成員,我們通常使用->,如下:

stu1->age = 15;

但是上面的操作是錯(cuò)誤的,因?yàn)閟tu1是結(jié)構(gòu)體指針變量,并沒(méi)有指向某一塊地址,也就是我們所謂的野指針,那么直接訪問(wèn)它是會(huì)導(dǎo)致段錯(cuò)誤的,正確的做法是給這個(gè)指針變量賦值,讓它指向另一個(gè)同類(lèi)型的結(jié)構(gòu)體地址:

stu1 = &stu; //stu是我們?cè)谏厦娑x的結(jié)構(gòu)體變量,加上&表示取地址

stu1->age = 15;

或者通過(guò)調(diào)用庫(kù)函數(shù)malloc申請(qǐng)一塊大小為對(duì)應(yīng)結(jié)構(gòu)體大小的內(nèi)存地址,賦值給結(jié)構(gòu)體指針變量,然后就可以給結(jié)構(gòu)體指針變量所指向的內(nèi)存地址賦值:

stu1 = malloc(sizeof(struct strudent));

stu1->age = 15;

這種用法在內(nèi)核代碼中非常常見(jiàn)(Linux內(nèi)核中使用kmalloc申請(qǐng)內(nèi)存):

指針與函數(shù)

指針函數(shù)

指針函數(shù)本質(zhì)是一個(gè)函數(shù),只不過(guò)它的返回值是一個(gè)地址(指針),當(dāng)我們調(diào)用這些函數(shù)的時(shí)候需要用同類(lèi)型的指針變量來(lái)接收。例如:

char * strcpy(char *dest, const char *src);

int *func(int x,int y);

void *malloc(size_t size);

int *a = func(3, 5);

函數(shù)指針

函數(shù)指針本質(zhì)是一個(gè)指針變量,只不過(guò)它指向的類(lèi)型是一個(gè)函數(shù),那么這個(gè)變量只能被一個(gè)函數(shù)賦值。如下,這種用法在內(nèi)核中非常常見(jiàn):

在結(jié)構(gòu)體中定義函數(shù)指針:

給函數(shù)指針賦值:

總結(jié):

關(guān)于指針的應(yīng)用在Linux中無(wú)論是應(yīng)用層代碼中還是kernel內(nèi)核代碼中應(yīng)用都是非常普遍的,深入的理解指針不經(jīng)能使自己寫(xiě)出高效的代碼,更能讓你非常容易的讀懂大型項(xiàng)目中的代碼。


*博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請(qǐng)聯(lián)系工作人員刪除。

汽車(chē)防盜機(jī)相關(guān)文章:汽車(chē)防盜機(jī)原理
燃?xì)鈭?bào)警器相關(guān)文章:燃?xì)鈭?bào)警器原理


關(guān)鍵詞: 指針

相關(guān)推薦

技術(shù)專(zhuān)區(qū)

關(guān)閉