做網(wǎng)站用什么ps軟件/朋友圈營銷
1. 結(jié)構(gòu)體、共用體的定義及區(qū)別,typedef 定義別名
結(jié)構(gòu)體的定義
結(jié)構(gòu)體是一種用戶自定義的數(shù)據(jù)類型,它可以將不同類型的數(shù)據(jù)組合在一起。例如,定義一個表示學(xué)生信息的結(jié)構(gòu)體:
// 定義結(jié)構(gòu)體類型 struct Student
struct Student {char name[20];int age;float score;
};
共用體的定義
共用體也是一種用戶自定義的數(shù)據(jù)類型,但它的所有成員共享同一塊內(nèi)存空間。例如,定義一個簡單的共用體:
union Data {int int_value;float float_value;char char_value;
};
結(jié)構(gòu)體與共用體的區(qū)別
- 內(nèi)存分配:
- 結(jié)構(gòu)體的每個成員都有自己獨(dú)立的內(nèi)存空間,結(jié)構(gòu)體所占內(nèi)存大小是所有成員內(nèi)存大小之和(考慮內(nèi)存對齊)。例如,上述
struct Student
結(jié)構(gòu)體,name
數(shù)組占20字節(jié),age
占4字節(jié),score
占4字節(jié)(假設(shè)float
占4字節(jié)),總共28字節(jié)(考慮內(nèi)存對齊可能會有一些填充)。 - 共用體的所有成員共享同一塊內(nèi)存,其大小等于占用內(nèi)存最大的成員的大小。對于
union Data
,int
可能占4字節(jié),float
占4字節(jié),char
占1字節(jié),所以union Data
的大小為4字節(jié)。
- 結(jié)構(gòu)體的每個成員都有自己獨(dú)立的內(nèi)存空間,結(jié)構(gòu)體所占內(nèi)存大小是所有成員內(nèi)存大小之和(考慮內(nèi)存對齊)。例如,上述
- 數(shù)據(jù)存儲和訪問:
- 結(jié)構(gòu)體中每個成員都可以獨(dú)立存儲和訪問不同的值。例如,可以分別設(shè)置
struct Student
結(jié)構(gòu)體中name
、age
和score
的值。 - 共用體在某一時(shí)刻只能存儲其中一個成員的值,因?yàn)樗鼈児蚕韮?nèi)存。當(dāng)給一個成員賦值時(shí),可能會覆蓋其他成員的值。
- 結(jié)構(gòu)體中每個成員都可以獨(dú)立存儲和訪問不同的值。例如,可以分別設(shè)置
使用 typedef 定義結(jié)構(gòu)體、共用體別名
- 結(jié)構(gòu)體別名:
typedef struct Student StudentInfo; // 現(xiàn)在 StudentInfo 就可以當(dāng)作 struct Student 使用StudentInfo student1; // 等同于 struct Student student1;
- 共用體別名:
typedef union Data MyData;MyData data; // 等同于 union Data data;
2. 結(jié)構(gòu)體和共用體數(shù)組、指針的定義和初始化,以及參數(shù)傳遞及應(yīng)用
結(jié)構(gòu)體數(shù)組和指針
- 結(jié)構(gòu)體數(shù)組定義與初始化:
struct Student students[<