C语言程序设计 细节总结(第9章 结构体共用体枚举)
第9章 結(jié)構(gòu)體、共用體、枚舉
9.1 結(jié)構(gòu)體
1.對(duì)于同類型結(jié)構(gòu)體變量之間可以整體一次賦值
9.2 指向結(jié)構(gòu)體的指針
9.2.1結(jié)構(gòu)體變量的指針
1.定義格式:struct 結(jié)構(gòu)體名 *結(jié)構(gòu)體指針變量名
2.賦值格式:結(jié)構(gòu)體指針變量名=&結(jié)構(gòu)體變量
3.結(jié)構(gòu)體成員引用:
(1)(*結(jié)構(gòu)體指針變量).成員名
(2)結(jié)構(gòu)體指針變量->成員名
例:
#include<stdio.h>
struct stu
{int num;char name[20];int score;
};
int main()
{struct stu s={1001,"zhang",99};struct stu *p;p=&s;printf("num\tname\tscore\n");printf("%d\t%s\t%d\n",s.num,s.name,s.score);printf("%d\t%s\t%d\n",(*p).num,(*p).name,(*p).score);printf("%d\t%s\t%d\n",p->num,p->name,p->score);return 0;
}
9.2.2 結(jié)構(gòu)體數(shù)組的指針:與指向多維數(shù)組的指針類似
9.2.3 結(jié)構(gòu)體(數(shù)組)作函數(shù)的參數(shù)、指向結(jié)構(gòu)體的指針作函數(shù)參數(shù)
9.3 共用體(union)
1.共用體類型:為了節(jié)省內(nèi)存空間,把不同用途的數(shù)據(jù)存放在同一存儲(chǔ)區(qū)域
2.共用體類型變量在內(nèi)存中所占空間不是所有成員空間長(zhǎng)度和,而是長(zhǎng)度最大成員項(xiàng)的存儲(chǔ)空間
3.由于各成員共用一個(gè)存儲(chǔ)空間,所以第一次賦得值會(huì)被第二次覆蓋,覆蓋后歸0
4.定義:union 共用體名{成員列表};
5.初始化:union 共用體類型名 共用體變量名={初始值};
9.4 枚舉類型(enum)
1.枚舉類型定義:enum 枚舉名{枚舉值表};
2.枚舉變量定義:enum 枚舉類型名{枚舉值表}枚舉變量表列;
3.枚舉數(shù)組定義:enum 枚舉類型名 數(shù)組名[長(zhǎng)度];
4.枚舉變量初始化:枚舉變量=枚舉元素;
例:
enum weekday{sun,mon,tue,wed,thu,fri,sat};
enum weekday a,b;
或
enum weekday{sun,mon,tue,wed,thu,fri,sat}a,b;
enum weekday enday[7];
a=mon;
b=(weekday)6;
5.枚舉數(shù)據(jù)的輸入輸出:不能對(duì)枚舉數(shù)據(jù)直接輸入輸出,但枚舉變量可作為整型變量處理。
(1)輸入:scanf(“%d”,&a);
(2)輸出:
1)直接輸出枚舉變量中存放的整型值,但不直觀:
a=mon;printf(“%d”,a);
2)利用多分支選擇語句輸出對(duì)應(yīng)字符串:
Switch(a)
{
case sun:printf(“sun”);break;
case mon:printf(“mon”);break;
…
}
3)用二維字符數(shù)組存儲(chǔ)枚舉常量對(duì)應(yīng)的字符串
enum flag{first,second} fg;
char *name[]={“first”,”second”};
fg=first;
printf(“%s”,name[fg]);
9.5 用typedef關(guān)鍵字定義類型
1.可以用typedef為已有類型名定義新的類型名,可以聲明數(shù)組、字符串類型
2.typedef與#define類似,#define是在預(yù)編譯s時(shí)處理的,只能做簡(jiǎn)單替換,typedef是編譯時(shí)處理的
3.typedef有利于程序通用與移植
總結(jié)
以上是生活随笔為你收集整理的C语言程序设计 细节总结(第9章 结构体共用体枚举)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 昔开头的成语有哪些啊?
- 下一篇: C语言程序设计 细节总结(第10-11章