結(jié)構(gòu)體的動(dòng)態(tài)內(nèi)存分配與別名

回顧一下畦浓,以前講的用malloc的動(dòng)態(tài)內(nèi)存分配腹纳,返回值是一個(gè)指針,指向的是這塊內(nèi)塊的地址产还。 結(jié)構(gòu)體其實(shí)也是一樣的。例下

struct Student{

? ?char* name;

? ?int age;

};

void main(){

? ?struct Student* p = (struct Student*)malloc(sizeof(struct Student) * 10);

? ?p->age = 20;

? ?p->name = "watson";

? ?printf(p->name);

? ?free(p);

? ?system("pause");

}

關(guān)鍵 struct Student* p = (struct Student*)malloc(sizeof(struct Student) * 10); ?可能看出嘀趟,這樣寫脐区,返回的,就是一個(gè)結(jié)構(gòu)體的指針對(duì)象她按,右邊還有一個(gè)強(qiáng)制轉(zhuǎn)形牛隅,因?yàn)榉祷氐氖且粋€(gè)void* ,如果不轉(zhuǎn)形,在C中可能沒問題酌泰,在LIUNX中貌似就會(huì)出問題倔叼,所以還是采用標(biāo)準(zhǔn)寫法

這里直接對(duì)p進(jìn)行操作,根據(jù)以前的講解宫莱,就是操作的第一個(gè)元素丈攒,p++后,就是操作第二個(gè)元素授霸,所以可以利用指針的加減法來(lái)進(jìn)行遍歷過程

最后巡验,用完動(dòng)態(tài)內(nèi)存都要記得釋放掉

再講講別名

typedef struct Student{

? ?char name[20];

? ?int age;

}S,*S1;

void main(){

? ?S s = {"waston",11};

? ?S1 s1 = &s;

? ?printf(s1->name);

? ? system("pause");

}

用typedef來(lái)定義一個(gè)別名,這里定義了結(jié)構(gòu)體的別名S碘耳,還定義了一個(gè)結(jié)構(gòu)定的指針別名S1显设,在main中可以看出,真的跟JAVA的寫法越來(lái)越像了辛辨。

最后講結(jié)構(gòu)體中的函數(shù)指針

typedef struct Student{

? ?char *name;

? ?int age;

? ?void(*sayHi)(char*);

}Student;

typedef Student *StudentP;

void say(char *text){

? printf("SAYHI");

}

void main(){

? ?Student s = {"watson",11,say};

? ?StudentP p = &s;

? ?p->sayHi("saysomething");

? ?system("pause");

}

首先是定義了一個(gè)和結(jié)構(gòu)體名一樣的別名捕捂,為什么這樣定義呢,因?yàn)榉奖愣犯悖昝鞯臅r(shí)候可能不寫struct幾個(gè)詞指攒,其次是定義了一個(gè)結(jié)構(gòu)體指針

結(jié)構(gòu)定中,定義了一個(gè)函數(shù)指針僻焚! 和以前講的一樣允悦,只需要定義函數(shù)指針的返回值,以及參數(shù)類型就行了虑啤。

在外部傳入一個(gè)同樣結(jié)構(gòu)的方法就行隙弛! 直接把方法名傳入就行,因?yàn)榉椒褪撬膬?nèi)存地址狞山,就是指針全闷,和&say是一樣的效果。

其它邏輯和一起說的一樣萍启。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末总珠,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌姚淆,老刑警劉巖孕蝉,帶你破解...
    沈念sama閱讀 211,376評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異腌逢,居然都是意外死亡降淮,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,126評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門搏讶,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)佳鳖,“玉大人,你說我怎么就攤上這事媒惕∠捣裕” “怎么了?”我有些...
    開封第一講書人閱讀 156,966評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵妒蔚,是天一觀的道長(zhǎng)穿挨。 經(jīng)常有香客問我,道長(zhǎng)肴盏,這世上最難降的妖魔是什么科盛? 我笑而不...
    開封第一講書人閱讀 56,432評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮菜皂,結(jié)果婚禮上贞绵,老公的妹妹穿的比我還像新娘。我一直安慰自己恍飘,他們只是感情好榨崩,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,519評(píng)論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著章母,像睡著了一般母蛛。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上胳施,一...
    開封第一講書人閱讀 49,792評(píng)論 1 290
  • 那天溯祸,我揣著相機(jī)與錄音肢专,去河邊找鬼舞肆。 笑死,一個(gè)胖子當(dāng)著我的面吹牛博杖,可吹牛的內(nèi)容都是我干的椿胯。 我是一名探鬼主播,決...
    沈念sama閱讀 38,933評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼剃根,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼哩盲!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,701評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤廉油,失蹤者是張志新(化名)和其女友劉穎惠险,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體抒线,經(jīng)...
    沈念sama閱讀 44,143評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡班巩,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,488評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了嘶炭。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片抱慌。...
    茶點(diǎn)故事閱讀 38,626評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖眨猎,靈堂內(nèi)的尸體忽然破棺而出抑进,到底是詐尸還是另有隱情,我是刑警寧澤睡陪,帶...
    沈念sama閱讀 34,292評(píng)論 4 329
  • 正文 年R本政府宣布弦悉,位于F島的核電站,受9級(jí)特大地震影響诅需,放射性物質(zhì)發(fā)生泄漏螺捐。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,896評(píng)論 3 313
  • 文/蒙蒙 一逮矛、第九天 我趴在偏房一處隱蔽的房頂上張望鸡号。 院中可真熱鬧,春花似錦须鼎、人聲如沸鲸伴。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,742評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)汞窗。三九已至,卻和暖如春赡译,著一層夾襖步出監(jiān)牢的瞬間仲吏,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工蝌焚, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留裹唆,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,324評(píng)論 2 360
  • 正文 我出身青樓只洒,卻偏偏與公主長(zhǎng)得像许帐,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子毕谴,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,494評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容