c语言 构造类,C语言之构造类型
一、結構體類型
1、構造結構體類型
struct 結構體類型名
{成員1的定義;
成員2的定義;
成員n的定義;
};
例如:
struct student
{int sn;
int age;
char sex;
int s[3];
};
注:
(1)定義成員的方式與定義普通變量的方式一樣。
(2)成員列表必須用一對花括號括起。
(3)結構體名可以省略。
2、定義結構體變量
三種格式
A.先定義(構造)結構體類型名再定義結構體變量
例如:
main()
{
struct student//類型名
{int sn;
int age;
char sex;
int s[3];
};
/*類型定義*/
struct student stul,stu2,st[25];/*變量定義*/
}
B.在定義結構體類型的同時可以定義結構體變量
例如:
struct student
{int sn;
int agc;
char sex;
int s[3];
}stul,stu2,st[25];
C.類型、變量同時定義,類型名student省略。(一般不用)
例如:
struct
{int sn:
int age;
char scx;
int s[3];
int*p;
}stul,stu2,st[25];
注:(1)結構體變量在內存中占用字節數為各成員占用字節數總和。
例如:
sturct aa
{int num;
char name[10]:
};
struct bb
{int a ;
float b;
struct aa c;
};
struct bb a:計算:sizcof(a)的值是多少?
注意:char數組是每個元素占一個字節
結果:2+10+2+4=18
例:
double a;
double*b;
double c[5];
則:sizcof(a),sizcof(b),sizeof(c)的值分別為:
8 2 40
例:
若有定義語句char*pt[3];則sizcof(pt)的值為:
2*3=6
指針占字節數始終為2字節
3、結構變量的初始化及引用
使用結構體變量、結構體數組、結構體指針變量
(1)在定義結構體變量的同時可以將各成員的初值按順序放在一對花括號中,來進行對結構體變量的初始化。若初值個數多于成員個數則出錯,若初值個數少于成員個數,則多余成員自動賦0。
struct aa
{int a;
char b[10];
float c;
}al={30,"china",40.5},a2={60,"kunming"},a3;
(2)結構體變量不能整體引用,只能引用它的成員。(同數組相似)
引用結構體成員的方式:
結構體變量名.成員名
其中(.)為成員運算符。
如:
printf("al=%d,%s,%f",al);非法
printf("a1=%d,%s,%f",al.a,al.b,al.c);
al.a=80;
al.b="xinjiang";//非法:常量不能放在=左邊
al.c=60.5;
注意:“.”是成員運算符,與()[]共同為一級運算符
4、指向結構體數據類型的指針
(1)指向結構體變量的指針
可以用指針變量指向結構變量也可能用指針變量指向結構體變量中的成員。要注意指針變量的類型必須與它所指向變量的類型相同。當指針變量指向結構體變量時,對指針變量加1則跳過整個結構體而不是跳過一個成員。
如:
struct student
{int num;
char name[20];
char sex;
float score;
};
struct student aa={1001,"zhang",'M',80.5};
struct student*p&aa;
char*q=aa.name;
int*r=&aa.num;
看官見笑了
struct student aa{1001."zhang",M,80.5}.
struct student*p=&aa;
char*q=aa.name;
int*r=&aa.num;
當指針變量p指向結構體變量aa時,引用aa中成員的方式有三種:
aa.num
(*p).num
p->num ->指向運算符
aa.score
(*p).score
p->score
(2)指向結構體數組的指針
struct student
{int num;
char name[20];
char sex;
float score;
};
struct student stu[3]={
{1001,"zhang",:M,60.5},
{1002,"peng",VM,100},
{1003,"wang";w,90.9}
};
struct student*p=stu;
見笑了
例題:
訪問zhang:
stu[0].name
p->name
(*p).name
訪問1002:
stu[1].num
(p+1)->num
(*(p+1)).num
訪問w:
stu[2].sex
(p+2)->sex
(*(p+2)).sex
注:
(1)可以用結構體變量的成員作為實參,它與普通變量作為實參的用法是一樣的。
(2)用結構體變量作為實參時,要求形參必須是同一結構體類型的變量,傳遞后形參與實參各對應成員值是一樣的。
(3)也可以用結構體類型的地址(指針變量或數組)作為實參,要求形參必須是同一結構體類型的指針變量或數組。只要是地址傳遞,則可以通過形參來改變實參的值。
二、鏈表
在C語言之鏈表中有詳細介紹,這里篇幅太長不做贅述
三、共用體類型
在C語言之共用體類型中有詳細介紹,這里篇幅太長不做贅述
四、typedef
在C語言之typedef中有詳細介紹,這里篇幅太長不做贅述
總結
以上是生活随笔為你收集整理的c语言 构造类,C语言之构造类型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c语言判断字符是否等于e,C语言如何实现
- 下一篇: 用c语言链表做一个词典,电子字典C语言链