第五周第二天2019-11-26

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

1.結(jié)構(gòu)體指針就是指向結(jié)構(gòu)體變量的指針,一個(gè)結(jié)構(gòu)體變量的起始地址就是這個(gè)結(jié)構(gòu)體變量的指針。指向結(jié)構(gòu)體對(duì)象的指針變量既可指向結(jié)構(gòu)體變量,也可指向結(jié)構(gòu)體數(shù)組中的元素。

例如:

struct student

{

? ? int? ? ? num;

? ?char? ?name[10];

? ?char? ?sex;

? ?float? ?score;

}struct? student? stu1[10]={

1,'a','b',2,'c','d',3,'e','f'

};

struct? student *p=&struct? student? stu1[0];

printf("%d",*p);? ? ?(1)

printf("%c",p->name);? (a)

其中p指向結(jié)構(gòu)體變量中的name成員用p->name表示,->稱(chēng)為指向運(yùn)算符。

2、結(jié)構(gòu)體數(shù)據(jù)類(lèi)型大小是4的倍數(shù),例如

struct student

{

? ? int? ? ? num;

? ? char? ? s;

? ?char? ?sex;

? ?float? ?score;

}就是4+(1+1)+4? ?,12個(gè)字節(jié),為什么是12個(gè),每一排4個(gè)字節(jié),第一排排滿(mǎn)了4個(gè),第二排排了1個(gè)+1個(gè),剩下兩個(gè)排不下float的4個(gè)字節(jié),自動(dòng)排到下一排,4個(gè)字節(jié),所以一共是12個(gè)字節(jié)。如果是

? ? ?int? ? ? num;

? ? char? ? s;

? ? int? ? ? a;

? ? char? ? b;

就是4+1+4+1,16個(gè)字節(jié),第一排4個(gè)字節(jié),第二排一個(gè)字節(jié),剩下三個(gè)放不下下一個(gè)int的4個(gè)字節(jié),自動(dòng)到下一排,排int的4個(gè)字節(jié),然后最后一排一個(gè)字節(jié)。所以一共是4*4=16個(gè)字節(jié)。

3、結(jié)構(gòu)體的操作方式有增、刪、修改、查找、排序。

結(jié)構(gòu)體是唯一一個(gè)可以整體賦值的,例如:

struct? student? stu1[10];

stu[0]=stu[1];

typedef 規(guī)定一種數(shù)據(jù)類(lèi)型,在struct里可以有可以沒(méi)有,起到一個(gè)聲明的作用。

最后編輯于
?著作權(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ù)。

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