日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

c语言 构造类,C语言之构造类型

發布時間:2024/10/8 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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语言之构造类型的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。