C語言程序設計課件(A套)之第十章結構、聯(lián)合與枚舉類型_第1頁
C語言程序設計課件(A套)之第十章結構、聯(lián)合與枚舉類型_第2頁
C語言程序設計課件(A套)之第十章結構、聯(lián)合與枚舉類型_第3頁
C語言程序設計課件(A套)之第十章結構、聯(lián)合與枚舉類型_第4頁
C語言程序設計課件(A套)之第十章結構、聯(lián)合與枚舉類型_第5頁
已閱讀5頁,還剩64頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

結構、聯(lián)合與枚舉類型第一節(jié)結構類型第二節(jié)結構數組第三節(jié)結構指針第四節(jié)在函數之間傳遞結構第五節(jié)聯(lián)合類型第六節(jié)枚舉類型第七節(jié)用typedef定義類型第八節(jié)鏈表根底問題的引出

用學號、姓名、性別、年齡、住址等屬性來描述一個學生。

int

num; charname[20];charsex;

int

age; charaddr[30];問題一:在程序中這些變量沒有的內在聯(lián)系。問題二:如果有成百上千的學生,可能造成混亂。一、結構類型的概念第一節(jié)結構類型這些數據存放在內存的某個區(qū)域。將此區(qū)域統(tǒng)一來使用,形成了結構體的概念。結構是邏輯上相互聯(lián)系的一組分量的集合。結構中的分量可以有不同的類型數據,結構中的分量稱為結構的成員。numnamesexageaddr10010LiFunM18Beijing第一節(jié)結構類型比較簡單數據類型時的變量說明語句:inti;struct

結構體名{

數據類型

成員名1;

數據類型

成員名2;……

數據類型

成員名n;};二、結構類型的定義struct為關鍵字結構體名是用戶定義的類型標識。{}中包圍的是組成該結構的成員。成員的數據類型既可以是簡單的數據類型(int、char、float、double...),也可以是復雜的數據類型(數組類型和結構類型)。第一節(jié)結構類型結構定義實例為了描述日期可以定義如下結構:

struct

date

{

intyear; /*年結構成員的*/ intmonth; /*月數據類型是*/ intday; /*日整型*/

};為了處理通信錄,可以定義如下結構:

struct

address

{charname[30]; /*姓名。字符數組*/ charstreet[40];/*街道名稱*/ charcity[20];/*城市*/ charstate[2];/*省市代碼*/ unsignedlongzip; /*郵政編碼。*/

};第一節(jié)結構類型在定義了某種類型的結構體后,就可以使用該類型的結構變量。用類型說明語句說明結構變量struct結構體名結構變量名;系統(tǒng)為所說明的結構變量按照結構定義時說明的組成〔成員分量〕,分配存儲數據的實際內存單元。例:將變量today說明為date型的結構變量: structdatetoday;說明多個address型的結構變量: structaddresswang,li,zhang;結構變量同樣有存儲類型,存儲特性與一般變量完全相同。三、結構變量的說明第一節(jié)結構類型結構變量占用內存情況結構變量的各個成員分量在內存中占用連續(xù)存儲區(qū)域,所占內存大小為結構中每個成員的占用內存的長度之和。結構變量today和wang占用在內存的情況如下圖。2字節(jié)2字節(jié)2字節(jié)today(structdate)6個字節(jié)yearmonthdaywang(structaddress)96個字節(jié)30字節(jié)40字節(jié)20字節(jié)2字節(jié)4字節(jié)namestreetcitystatezip表示int表示char表示unsignedlong第一節(jié)結構類型關于結構類型的說明類型與變量是不同的概念。在定義結構變量時一般先定義一個結構類型,然后定義變量為該類型。只能對變量賦值、存取或運算,而不能對一個類型賦值、存取或運算。在編譯時,對類型是不分配空間的,只對變量分配空間。對結構中的成員,可以單獨使用,它的作用與地位相當于普通變量。成員也可以是結構變量。成員名可以與程序中的變量名相同時,二者不代表同一對象。第一節(jié)結構類型在定義結構時說明結構變量例如:struct

student

{

int

num; charname[20]; charsex; int

age; charaddr[30];

}student1,student2;直接說明結構變量例如:struct

{

char

name[20];

char

addr[30];

}zhang;第一節(jié)結構類型結構成員是另一個結構例如:struct

date { int

month;

int

day;

int

year;

};

struct

student

{

int

num; charname[20]; charsex; int

age;

struct

date

birthday; charaddr[30];

}student1,student2;daymonthyearagesexnamnumaddbirthdaybirthdaybirthdaybirthday第一節(jié)結構類型訪問結構中的成員是通過成員的名字,稱為“按名引用〞。在程序中使用結構中成員的方法為: 結構變量名.成員名稱 例:將“〞送入today,對其各個成員分別賦值: today.year=92; today.month=10; today.day=1;指明結構成員的符號“.〞是運算符,含義是訪問結構中的成員?!?〞操作的優(yōu)先級在C語言中是最高的。其結合性為從左到右。四、引用結構變量的成員第一節(jié)結構類型例:用結構描述一個人的根本情況,可以定義如下結構: structperson /*定義person結構類型*/ { charname[30]; charsex; structdatebirthday;/*結構的嵌套定義*/ }man;輸入zhang先生的情況,如生日,可用如下語句: strcpy(,“zhang〞); /*注意:不能寫成="zhang";*/ man.sex=’M’;/*為結構中的字符成員賦值*/ man.birthday.year=1960; man.birthday.month=3; man.birthday.day=28; /*為嵌套定義的結構中的成員賦值*/第一節(jié)結構類型輸入zhang先生的情況,可用如下語句: strcpy(,“zhang〞); /*注意:不能寫成="zhang";*/ man.sex=’M’;/*為結構中的字符成員賦值*/ man.birthday.year=1960; man.birthday.month=3; man.birthday.day=28; /*為嵌套定義的結構中的成員賦值*/如果要將“zhang〞改為“zhong〞,只要將結構變量man中的數組成員name下標為2的元素‘a’改為‘o’即可??梢允褂靡韵抡Z句: [2]='o';. /*為結構變量中的數組成員的一個元素賦值*/第一節(jié)結構類型五、對結構變量的整體操作 要對結構進行整體操作有很多限制,C語言中能夠對結構進行整體操作的運算不多,只有賦值“=〞和取地址“&〞操作。 例如:有structdatesunday,today;如果today被賦值后,可用語句 sunday=today; 為sunday賦值。第一節(jié)結構類型結構類型的引用說明不能將一個結構變量作為一個整體直接訪問。例如已定義student1為結構變量并且已有值。不能這樣引用: printf(“%s,%c,%d,%d,%d\n〞,student1);如果成員本身又是一個結構類型,那么要用假設干個成員運算符,一級一級地找到最低的一級的成員。只能對最低級的成員進行賦值或存取等運算。例如,對上面定義的結構變量student1,可以這樣訪問各個成員:

student1.sex student1.birthday.month student1.birthday.day student1.birthday.year第一節(jié)結構類型對成員變量可以象普通變量一樣進行各種運算。student2.birthday.year=student1.birthday.year;sum=student1.birthday.month+12;student1.age++;++student1.age;可以引用成員的地址,也可以引用結構變量的地址。如: scanf(“%d〞,&student1.num); printf(“%p〞,&student1);但不能用以下語句整體讀入結構變量,如: scanf(“%d,%s,%c,%d,%d,%d,%s〞,&student1);第一節(jié)結構類型例:輸入今天的日期,然后輸出該日期。 #include<stdio.h> main() { structdate

/*在函數中定義結構類型date*/

{intyear,month,day;

};

structdate

today;/*說明結構變量today*/ printf("Entertodaydate(YYYY/MM/DD):"); scanf("%d/%d/%d",&today.year,

&today.month,&today.day); printf("Today:%d/%d/%d\n",today.year,

today.month,today.day); }例C10_103第一節(jié)結構類型對結構變量進行初始化在說明變量的同時,可以對每個成員置初值,稱為結構變量的初始化,其一般形式為:定義結構時說明變量

struct結構體名

{……

}結構變量={初始化數據};類型說明語句

struct結構體名

結構變量={初始化數據};說明:{}中的初始化數據用逗號分隔。注意數據的個數、數據類型、順序要一一對應。六、結構變量的初始化第一節(jié)結構類型例:用結構描述個人根本情況,打印個人檔案。structdate /*在所有函數的外部定義結構date*/{ intyear,month,day;};structperson /*在所有函數的外部定義結構person*/{charname[14],sex; structdatebirthday;};structpersonxu={"Xulihui",'M',{1962,10,4}};main(){ structpersonfang={"Fangjin",'M',{1963,9,13}};structpersonyuan={"Yuanzhiping",'M',{1963,10,5}};/*說明結構變量fang、yuan,并初始化結構變量*/第一節(jié)結構類型

printf("namesexbirthday\n");

printf("-------------------------------\n");

printf("%-14s%-4c%4d.%2d.%2d\n",

xu.name,xu.sex,xu.birthday.year,

xu.birthday.month,xu.birthday.day);

printf("%-14s%-4c%4d.%2d.%2d\n",

fang.name,fang.sex,fang.birthday.year,

fang.birthday.month,fang.birthday.day); printf("%-14s%-4c%4d.%2d.%2d\n",

yuan.name,yuan.sex,yuan.birthday.year,

yuan.birthday.month,yuan.birthday.day);}例C11_104第一節(jié)結構類型結構體數組說明語句的格式對結構體數組的認識是一個數組。數組中的每一個元素的數據類型是結構類型。例:為記錄100個人的根本情況??梢哉f明一個有100個元素的數組。數組元素的基類型為結構。structpersonman[100]; man就是有100個元素的結構數組,數組的每個元素為person型。 標識符[數組長度]struct

結構體名第二節(jié)結構數組訪問結構數組元素成員必須遵守數組使用和訪問結構成員的規(guī)定。訪問數組元素按下標進行訪問。訪問數組元素的成員,使用“.〞運算符和成員名。例如:要將數組man中的3號元素賦值為: "Fangjin",'M',1963,9,13, 就可以使用以下語句: strcpy(man[3].name,"Fangjin〞); man[3].sex='M'; man[3].birthday.year=1963; man[3].birthday.month=9; man[3].birthday.day=13;第二節(jié)結構數組將“Fangjin〞改為“Fangjun〞,修改其中的字母'i': man[3].name[5]='u'; /*為數組中元素的數組成員中的一個字符賦值*/注意結構數組遵循數組的性質數組元素的起始下標從0開始,數組名表示該結構數組的存儲首地址。結構數組存放在連續(xù)的內存區(qū)域中,所占內存大小為結構類型的大小乘以數組元素的數量。sizeof(structperson)301222301222301222......namesymdnamesymdnamesymdman[0]man[1]man[99]structpersonman[100]長度==

37

*

100

=

3700

字節(jié)?第二節(jié)結構數組例:簡單的密碼加密程序。加密過程是先定義一張字母加密對照表。將需要加密的文字輸入加密程序,程序根據加密表中的對應關系,將輸入的文字加密輸出。對加密表中未出現(xiàn)的字符那么不加密。輸入輸出輸入輸出輸入輸出輸入輸出輸入輸出ad bwck d;eiiakb;cwestructtable /*定義結構table*/{ charinput; /*成員input存輸入的字符*/ charoutput; /*成員output存輸出的字符*/};/*外部結構數組translate并初始化*/structtabletranslate[]={ 'a','d','b','w','c','k','d',';','e','i','i','a','k','b',';','c','w','e’}; /*建立加密對照表*/第二節(jié)結構數組“structtabletranslate[]={...}〞有三個作用:說明了一個外部的結構數組translate,表示數組的大小由后面給出的初始化數據決定,對結構數組進行初始化。在程序中給出了數組初始化數據,所以結構數組translate有9個元素。adbwckd;eiiakb;cwetranslate[0]translate[1]translate[2]translate[3]translate[4]translate[5]translate[6]translate[7]translate[8]第二節(jié)結構數組structtable{charinput,output;};structtabletranslate[]={'a','d','b','w','c','k','d',';','e','i','i','a','k','b',';','c','w','e'};main(){charch;intstr_long,i;str_long=sizeof(translate)/sizeof(structtable);

/*計算元素個數*/while((ch=getchar())!='\n'){for(i=0;translate[i].input!=ch&&i<str_long;i++);if(i<str_long)putchar(translate[i].output);

/*加密輸出*/elseputchar(ch);/*原樣輸出*/}}例C11_201第二節(jié)結構數組例:分析程序運行結果struct

s{intx;int*y;}

/*y:是指向整型的指針*/intdata[5]={10,20,30,40,50};/*data:整型數組*/structs

array[5]={100,&data[0],200,&data[1],300,&data[2],400,&data[3],500,&data[4]};

/*array:結構數組,初始化*/ 結構數組array的每個元素有兩個成員,初始化后的狀態(tài)如下。1002003004005001020304050array[0]array[1]array[2]array[3]array[4]data[0]data[1]data[2]data[3]data[4]第二節(jié)結構數組main(){ inti=0;/*說明變量i并賦初值*/

structss_var; /*s_ver:一般的結構變量*/

s_var=array[0];/*將結構數組array[0]整體賦給s_var*/⑴

printf("%d\n",s_var.x);⑵printf("%d\n",*s_var.y);printf("Forarray:\n");⑶printf("%d\n",array[i].x);⑷printf("%d\n",*array[i].y);⑸printf("%d\n",++array[i].x);⑹printf("%d\n",++

*array[i].y);⑺printf("%d\n",array[++i].x);⑻printf("%d\n",*

++

array[i].y);⑼printf("%d\n",(*

array[i].y)++);⑽printf("%d\n",*(array[i].y

++));⑾printf("%d\n",*

array[i].y

++);⑿printf("%d\n",*

array[i].y);} 第二節(jié)結構數組〔i=0〕:s_var=array[0];1002003004005001020304050array[0]array[1]array[2]array[3]array[4]data[0]data[1]data[2]data[3]data[4]s_var10010010100⑴s_var.x 取s_var的成員x的值⑵*

s_var.y 取s_var的成員指針y所指的內容

⑶array[i].x取array[i]的x的值

*

array[i].y取array[i]的指針y所指的內容10101001010010第二節(jié)結構數組

++

array[i].x

取array[i]的x的值,x加1后輸出

++

*

array[i].y 取array[i]的指針y所指的內容,y的內容加1后輸出1002003004005001020304050array[0]array[1]array[2]array[3]array[4]data[0]data[1]data[2]data[3]data[4]1001011011i0120030

⑺array[++i].x i先加1后取array[i]的x的值,輸出

*

++

array[i].y將array[i]的指針y先加1后再取y所指的內容,輸出10010100101011120030第二節(jié)結構數組

(*array[i].y)++

取array[i]的指針y的內容,輸出,y的內容再加1

*(array[i].y++) 取array[i]的指針y的內容,輸出,指針y再加1

1012003004005001120304050array[0]array[1]array[2]array[3]array[4]data[0]data[1]data[2]data[3]data[4]i0130314050

*array[i].y++ 同*(array[i].y++),由于運算的結合性隱含了括號,輸出

⑿*array[i].y

輸出

例C10_2021001010010101112003030314050第二節(jié)結構數組類似于指向根本數據類型的指針的概念,將結構體變量的地址賦給另一個變量,這就是指向結構體的指針〔簡稱為結構指針〕。結構指針說明的一般形式struct結構體名*標識符; 例如:structdate*pdate,today; 執(zhí)行語句:pdate=&today;結果:pdateyearmonthdaytoday一、結構指針的概念第三節(jié)結構指針 通過結構指針訪問成員采用運算符“->〞進行操作。結構指針->成員名 “->〞運算符有最高的優(yōu)先級,結合性從左至右。 通過結構指針pdate訪問成員year的操作就可以寫成:pdate->year=1963; 等價于:today.year=1963;(*pdate).year=1963;辨疑:pdate->year*pdate->year二、通過結構指針訪問結構體的成員例C10_301第三節(jié)結構指針例:用結構指針改寫加密程序structtable{ charinput,output;};structtabletransl[]={'a','d','b','w','c','k','d',';','e','i','i','a','k','b',';','c','w','e’,};main(){ charch; structtable*p,*pend;

/*p和pend為向結構指針*/

pend=&transl[sizeof(transl)/sizeof(structtable)-1

];/*pend指向結構數組transl的最后一個元素*/

while((ch=getchar())!='\n')

{for(p=transl;p->input!=ch&&

p!=pend;p++);

if(p->input==ch)putchar(p->output);

else

putchar(ch);}}adbwckd;eiiakb;cwetranslate[0]translate[1]translate[2]translate[3]translate[4]translate[5]translate[6]translate[7]translate[8]ppend第三節(jié)結構指針例.C:請分析程序的運算結果structs{ intx,*y; /*y:結構中的成員是指向整型的指針*/}*p; /*p:指向結構的指針*/intdata[5]={10,20,30,40,50,};/*data:整型數組*/structsarray[5]={100,&data[0],200,&data[1],300,&data[2],400,&data[3],500,&data[4]};

/*array:結構數組*/第三節(jié)結構指針main(){ p=array;/*指針p指向結構數組的首地址*/

printf("%d\n",

p->x);

printf("%d\n",

(*p).x);

printf("%d\n",

*p->y);

printf("%d\n",

*(*p).y); printf("%d\n",

++p->x);

printf("%d\n",

(++p)->x);

printf("%d\n",

p->x++);

printf("%d\n",

p->x); printf("%d\n",++(*p->y));

printf("%d\n",++*p->y); printf("%d\n",*++p->y);

printf("%d\n",p->x);

printf("%d\n",*(++p)->y);

printf("%d\n",p->x); printf("%d\n",*p->y++);

printf("%d\n",p->x); printf("%d\n",*(p->y)++);printf("%d\n",p->x); printf("%d\n",*p++->y);printf("%d\n",p->x);}第三節(jié)結構指針 結構數組array的初始化后的狀態(tài)如下圖。 ①p->x 取結構指針p指向的結構的成員x的值,輸出 ②(*p).x取結構指針p的內容的成員x的值,輸出 ③*p->y 取結構指針p的指針成員y的內容,輸出 ④*(*p).y取指針p的內容的指針成員y的內容,輸出 ⑤++p->xp所指向的x加1,x先加1后再輸出,p不加11002003004005001020304050array[0]array[1]array[2]array[3]array[4]data[0]data[1]data[2]data[3]data[4]p100101011001001010101第三節(jié)結構指針①(++p)->xp先加1后再取x的值,x不加1,輸出

②p->x++

先取x的值,輸出,然后x再加1,③p->x 輸出④++(*p->y)p所指的y的內容先加1,輸出,p不加1,y也不加1

++*p->y 同上,由運算的結合性隱含了括號,輸出1012003004005001020304050array[0]array[1]array[2]array[3]array[4]data[0]data[1]data[2]data[3]data[4]p2002012021222002002012122第三節(jié)結構指針①*++p->yp所指的y先加1后再取y的內容,輸出,

p不加1,y的內容不加1②p->x 輸出③*(++p)->yp先加1后再取所指y的內容,輸出30④p->x 輸出⑤*p->y++取p所指的y的內容輸出,然后p所指的y加1⑥

p->x 輸出1012013004005001022304050array[0]array[1]array[2]array[3]array[4]data[0]data[1]data[2]data[3]data[4]p30201300302013030030300第三節(jié)結構指針①*(p->y)++

取p所指的y的內容,輸出,然后p所指的y再加1②p->x 輸出

③*p++->y取p所指的y的內容,輸出,然后p再加1④p->x 輸出1012013004005001022304050array[0]array[1]array[2]array[3]array[4]data[0]data[1]data[2]data[3]data[4]p40300504003004050400例C10_303第三節(jié)結構指針指針運算與++運算規(guī)律小結 由運算符的優(yōu)先級和結合性決定++操作的對象; 由++的前綴/后綴形式,決定操作的時機。

++p->x p->x++

++*p->y *++p->y *(++p)->y *p->y++; *(p->y)++ *p++->y第三節(jié)結構指針結構與函數的關系: 向結構中傳遞函數的成員; 在函數之間傳遞整個結構; 向函數傳遞結構的地址〔指針〕。向函數中傳遞結構的成員 在函數中傳遞結構成員的方法與傳遞簡單變量的方法相同:在函數之間傳遞成員的值;在函數之間傳遞成員的地址。一、結構、結構指針作為函數的參數第四節(jié)在函數之間傳遞結構實例 printf(“%d〞,man.birthday.year);傳遞成員的值scanf(“%d〞,&man.birthday.year);傳遞成員的地址 gets();傳遞結構成員的地址第四節(jié)在函數之間傳遞結構在函數之間傳遞整個結構

將結構作為整體,在函數之間傳遞:將結構變量作為形參;函數的返回值為一個結構類型。第四節(jié)在函數之間傳遞結構例:利用結構變量求解兩個復數之積。①、(3+4i)×(5+6i)②、(10+20i)×(30+40i)structcomplx{ intreal;/*real為復數的實部*/ intim;/*im為復數的虛部*/};structcomplx

cmult(za,zb)/*函數返回值為結構類型*/structcomplx

za,zb; /*形式參數為結構類型*/{ structcomplx

w; w.real=za.real*zb.real-za.im*zb.im; w.im=za.real*zb.im+za.im*zb.real; return(w); /*返回計算結果,返回值的類型為結構*/} 例C10_401第四節(jié)在函數之間傳遞結構向函數傳遞結構的地址

向函數中傳遞結構的地址要將函數的形參定義為指向結構的指針, 在調用時要用結構的地址作為實參。例:輸入10本書的名稱和單價,按照單價排序。 程序中使用插入排序算法。第四節(jié)在函數之間傳遞結構插入排序的根本思想是:在數組中,有N個已經從小到大已經排好序的元素,要參加1個新的元素時,可以從數組的第1個元素開始,依次與新元素進行比較。當數組中首次出現(xiàn)第i個元素的值大于新元素時,那么新元素就應當插在原來數組中的第i-1個元素與第i個元素之間。 此時可以將數組中第i個元素之后〔包括第i個元素〕的所有元素向后移動1個位置,將新元素插入,使它成為第i個元素。這樣就可以得到已經排好序的N+1個元素。第四節(jié)在函數之間傳遞結構5552367911

555555555555222555535555555597611插入排序法例如第四節(jié)在函數之間傳遞結構#defineNUM10structbook /*定義結構book*/{ charname[20]; /*書名*/ floatprice; /*單價*/};main(){ structbookterm,books[NUM]; intcount; /*數組books的元素計數器*/ for(count=0;count<NUM;){printf(“EnterNameandPrice.book%d=",count+1);scanf(“%s%f〞,,&term.price);sortbook(term,books,count++);/*傳遞結構變量term和結構數組book數組的首地址〕*/ } printf("--------BOOKLIST---------\n"); for(count=0;count<NUM;count++) printbook(&books[count]); /*傳遞數組中1個元素的地址*/}第四節(jié)在函數之間傳遞結構sortbook(term,

pbook,count)structbook

term; /*形參:結構變量term*/structbook

*pbook;/*指向結構數組首元素的指針pbook*/intcount;

/*數組中已存入count個有序元素*/{ inti;

structbook*q,*pend

=pbook;

for(i=0;i<count;i++,pend++); for(;pbook<pend;pbook++) if(pbook->price>term.price)

break;

for(q=pend-1;q>=pbook;q--) *(q+1)=*q; *pbook=term;

/*在pbook處插入新元素term*/}第四節(jié)在函數之間傳遞結構printbook(pbook)structbook*pbook;{ printf("%-20s%6.2f\n",

pbook->name,pbook->price);}例C10_402第四節(jié)在函數之間傳遞結構定義結構變量stu:struct

student{intnum; floatscore;charsex;}stu;結構變量stu占用內存情況

numscoresex2個字節(jié)4個字節(jié)1個字節(jié)sizeof(stu)是7。第五節(jié)聯(lián)合類型union定義聯(lián)合變量stu:student{intnum; floatscore;charsex;}stu;聯(lián)合變量stu占用內存情況

4個字節(jié)

2個字節(jié)

1個字節(jié)unionunionunion聯(lián)合變量占用空間的大小等于成員分量中最長的成員占用內存的長度。4個字節(jié)第五節(jié)聯(lián)合類型0x780x560x340x12union{longi;intk;charc;}mix;mix.i=0x12345678;printf(“%x\n〞,mix.i);printf(“%x\n〞,mix.k);printf(“%x\n〞,mix.c);ffe0ffe1ffe2ffe3高地址低地址1234567800010010001101000101011001111000低高ffe3ffe2

ffe1

ffe0

第五節(jié)聯(lián)合類型

mix.c=‘A’;1234567800010010001101000101011001111000低高ffe3ffe2

ffe1

ffe0

123456

4

1

00010010001101000101011001000001低高ffe3ffe2

ffe1

ffe0

printf(“%ld\n〞,mix.i);printf(“%d\n〞,mix.k);printf(“%c\n〞,mix.c);30541984122081A例C10_501第五節(jié)聯(lián)合類型枚舉類型的特點:數據的取值是有限個數的數據類型。定義枚舉類型的格式

enum枚舉類型名{可能的取值表};例如:

enumweekday{sun,mon,tue,wed,thu,fri,dat};說明枚舉類型變量的格式

enum枚舉類型名變量標識符;第六節(jié)枚舉類型用戶自定義類型 標準類型〔如int、char、float等〕:系統(tǒng)已經定義好的類型,用戶可以直接使用,無須再進行定義。 用戶自定義類型:用戶根據自己的實際要求,自己定義的新的數據類型。除結構和聯(lián)合等類型之外,還可以用類型說明語句typedef定義新的類型標識符來代替已有的類型。typedef語句的一般形式typedef已定義的類型新的類型實例typedefintINTEGER;typedeffloatREAL; 等價:inti,j;INTEGERi,j;floatpai;REALpai;第七節(jié)用typedef定義類型用鏈表處理不定長數組。什么是鏈表?結構定義:

structstudent{intnum;floatscore;

structstudent

*

next;};

鏈表的分類單向鏈表、雙向鏈表等。一、鏈表概

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論