版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
會(huì)計(jì)學(xué)1C語(yǔ)言程序設(shè)計(jì)第8章一、結(jié)構(gòu)體如果在程序設(shè)計(jì)時(shí),需要將不同類型的數(shù)據(jù)組成一個(gè)有機(jī)整體來(lái)引用,此時(shí),用數(shù)組是無(wú)法完成的,C語(yǔ)言允許用戶自己可以定義這種特殊的數(shù)據(jù)結(jié)構(gòu),稱之為結(jié)構(gòu)體。結(jié)構(gòu)體中可以包含若干個(gè)類型不同的數(shù)據(jù)項(xiàng)。第1頁(yè)/共57頁(yè)二、結(jié)構(gòu)體類型的定義C語(yǔ)言中沒有現(xiàn)成的結(jié)構(gòu)體類型,如果用戶要使用結(jié)構(gòu)體類型,必須自己定義。結(jié)構(gòu)體類型的一般定義形式如下:struct結(jié)構(gòu)體類型名{類型名1成員名1;類型名2成員名2;
.
.....類型名n成員名n;};注意:定義結(jié)構(gòu)體類型時(shí),“結(jié)構(gòu)體名”是結(jié)構(gòu)體類型標(biāo)志,與struct共同組成結(jié)構(gòu)體類型名。第2頁(yè)/共57頁(yè)說(shuō)明:①structstudent是一個(gè)結(jié)構(gòu)體類型名,在使用過(guò)程中與系統(tǒng)提供的標(biāo)準(zhǔn)類型(如int、float等)具有同樣的地位和作用。②一個(gè)結(jié)構(gòu)體類型可以包含若干個(gè)成員,每個(gè)成員的類型可以不一樣。③一個(gè)結(jié)構(gòu)體類型數(shù)據(jù)在存儲(chǔ)時(shí)所占的內(nèi)存單元字節(jié)數(shù)相當(dāng)于每個(gè)成員所占內(nèi)存單元字節(jié)數(shù)的總和。例如:前面定義的structstudent結(jié)構(gòu)體類型數(shù)據(jù)存儲(chǔ)時(shí)所占內(nèi)存單元為69字節(jié)。例如:structstudent{intnumber;charname[10];charsex;intage;floatscroce;charaddress[50];};第3頁(yè)/共57頁(yè)三、結(jié)構(gòu)體類型變量的定義結(jié)構(gòu)體類型變量通常采取以下三種形式定義:1.先定義結(jié)構(gòu)體類型,再定義結(jié)構(gòu)體類型變量結(jié)構(gòu)體類型名結(jié)構(gòu)體變量名;例如:structstudent{intnumber;charname[10];charsex;intage;floatscroce;charaddress[50];};structstudentstud1,stud2;第4頁(yè)/共57頁(yè)例如:structstudent{intnumber;charname[10];charsex;intage;floatscroce;charaddress[50];}stud1,stud2;2.在定義結(jié)構(gòu)體類型的同時(shí)定義變量struct結(jié)構(gòu)體名{類型名1成員名1;類型名2成員名2;
......類型名n成員名n;}變量名表列;第5頁(yè)/共57頁(yè)例如:struct{intnumber;charname[10];charsex;intage;floatscroce;charaddress[50];}stud1,stud2;
3.直接定義結(jié)構(gòu)體類型變量struct{類型名1成員名1;類型名2成員名2;
......類型名n成員名n;}變量名表列;第6頁(yè)/共57頁(yè)注意:①結(jié)構(gòu)體類型和結(jié)構(gòu)體類型變量是兩個(gè)不同的概念,使用時(shí),先定義類型,后定義變量。②在程序中只能對(duì)結(jié)構(gòu)體類型變量進(jìn)行操作。③結(jié)構(gòu)體中的成員可以單獨(dú)使用,相當(dāng)于一個(gè)普通變量,成員名可以和程序中的普通變量同名,互不干擾。④結(jié)構(gòu)體中的成員可以是一個(gè)結(jié)構(gòu)體變量。例如:structdate{intmonth;intday;intyear;};structstudent1{intnumber;charname[10];charsex;structdatebirthday;floatscroce;charaddress[50];}stu1,stu2;第7頁(yè)/共57頁(yè)四、結(jié)構(gòu)體類型變量的引用和初始化結(jié)構(gòu)體類型變量一旦被定義后,就可以在程序中使用,與數(shù)組相似,在程序中不能直接引用結(jié)構(gòu)體類型變量,也不能對(duì)結(jié)構(gòu)體類型變量進(jìn)行整體輸入輸出,只能引用其中的各個(gè)成員,對(duì)其中的各個(gè)成員進(jìn)行輸入輸出。引用結(jié)構(gòu)體變量成員時(shí),象引用普通變量一樣,可以進(jìn)行各種運(yùn)算。第8頁(yè)/共57頁(yè)引用結(jié)構(gòu)體變量成員的一般形式如下:結(jié)構(gòu)體變量名.成員名例如:前面定義了結(jié)構(gòu)體類型變量stud1和stud2,可以對(duì)變量的各個(gè)成員進(jìn)行各種操作,例如:
stud1.number=10001;stud2.number=10002;
.........printf(″%d,&d″,stud1.number,stud2.number);第9頁(yè)/共57頁(yè)另外,在程序中,還可以用指向結(jié)構(gòu)體變量的指針變量來(lái)引用結(jié)構(gòu)體變量成員。例如:structstudentstud1;structstudent*p1=stud1;
(*p1).number=10001;.........注意:“->”是指向結(jié)構(gòu)體成員運(yùn)算符,“.”是結(jié)構(gòu)體成員運(yùn)算符,它們的結(jié)合方式從左到右,優(yōu)先級(jí)別最高。上述程序段,還可以寫成下面的形式:
structstudentstud1;structstudent*p1=stud1;
p1->number=10001;
.........第10頁(yè)/共57頁(yè)#include"stdio.h"#include"string.h"structstudent{intnumber;charname[10];intage;floatscore;}a;main(){a.number=1001;strcpy(,"liming");a.age=18;a.score=89.5;printf("%-8d%s%8d%6.1f",a.number,,a.age,a.score);}例8-1利用結(jié)構(gòu)體變量輸出學(xué)生信息。第11頁(yè)/共57頁(yè)#include"stdio.h"structstudent{intnumber;charname[10];intage;floatscore;}a={1001,"liming",18,89.5};main(){printf("%-8d%s%8d%6.1f",a.number,,a.age,a.score);}例8-2利用結(jié)構(gòu)體變量輸出學(xué)生信息。第12頁(yè)/共57頁(yè)一、結(jié)構(gòu)體數(shù)組的定義和引用結(jié)構(gòu)體數(shù)組同普通數(shù)組一樣,所有元素類型相同,是同一個(gè)結(jié)構(gòu)體類型。要定義一個(gè)結(jié)構(gòu)體類型數(shù)組,必須先定義結(jié)構(gòu)體類型,定義結(jié)構(gòu)體類型數(shù)組的一般形式如下:struct結(jié)構(gòu)體名數(shù)組名[常量表達(dá)式];例如:structstudenta[3];同普通數(shù)組相似,在程序中不能整體引用結(jié)構(gòu)體數(shù)組,也不能引用結(jié)構(gòu)體數(shù)組元素,只能引用結(jié)構(gòu)體數(shù)組元素的成員。例如:a[1].number=10001;a[2].number=10002;第13頁(yè)/共57頁(yè)二、結(jié)構(gòu)體數(shù)組初始化和應(yīng)用例如:
structsst{intnum;charname[10];intage};structssta[3]={{1001,"zhangsan",18},{1002,"lisi",19},{1003,"wangwu",20}};.........結(jié)構(gòu)體數(shù)組初始化與普通數(shù)組初始化相似,可以先定義結(jié)構(gòu)體類型,再定義結(jié)構(gòu)體數(shù)組并初始化。第14頁(yè)/共57頁(yè)例8-3某班級(jí)學(xué)生進(jìn)行學(xué)生干部選舉,候選人有張三、李四、王五三位同學(xué),全班共有學(xué)生40名,編寫一個(gè)程序統(tǒng)計(jì)候選人的得票數(shù)。#include"string.h"#include"stdio.h"structnum{charname[10];intnumber;};main(){structnuma[3]={{"zhangsan",0},{"lisi",0},{"wangwu",0}};inti,j;charinputname[20];printf("pleaseinputthelistofcandidate:\n");for(i=0;i<40;i++){scanf("%s",inputname);for(j=0;j<3;j++)if(strcmp(inputname,a[j].name)==0)a[j].number++;}printf("\n");for(i=0;i<3;i++)printf("%10s:%2d\n",a[i].name,a[i].number);}第15頁(yè)/共57頁(yè)C語(yǔ)言規(guī)定:在程序中不能直接對(duì)結(jié)構(gòu)體類型數(shù)組元素進(jìn)行輸入輸出,只能對(duì)結(jié)構(gòu)體類型數(shù)組元素的成員進(jìn)行輸入輸出。結(jié)構(gòu)體類型數(shù)組元素的成員的輸入與輸出與普通數(shù)組元素的輸入與輸出類似,通常利用循環(huán)語(yǔ)句來(lái)完成。三、結(jié)構(gòu)體類型數(shù)組的輸入與輸出第16頁(yè)/共57頁(yè)main(){intn,i,sum[SIZE];printf("Howmanystudents?\n");scanf("%d",&n);for(i=0;i<n;i++){printf("Name?\n");scanf("%s",stud[i].name);printf("No?\n");scanf("%d",&stud[i].num);printf("Score1,Score2,Score3?\n");scanf("%f,%f,%f",&stud[i].score[0],&stud[i].score[1],&stud[i].score[2]);sum[i]=stud[i].score[0]+stud[i].score[1]+stud[i].score[2];stud[i].ave=sum[i]/3.0;}printf("\nNAMENo.SCORE1SCORE2SCORE3AVE\n");printf("---------------------------------------------------\n");for(i=0;i<n;i++)printf("%-10s%3d%8.1f%8.1f%8.1f%8.1f\n",stud[i].name,stud[i].num,stud[i].score[0],stud[i].score[1],stud[i].score[2],stud[i].ave);}例8.4利用結(jié)構(gòu)體數(shù)組輸入并輸出一個(gè)班學(xué)生信息。#include"stdio.h"#defineSIZE100structstudent{charname[10];intnum;floatscore[3];floatave;}stud[SIZE];第17頁(yè)/共57頁(yè)1、指向結(jié)構(gòu)體類型數(shù)據(jù)的指針
以個(gè)結(jié)構(gòu)體類型變量的指針就是該結(jié)構(gòu)體類型變量所占據(jù)的內(nèi)存單元的起始地址。在C語(yǔ)言程序中,可以設(shè)置一個(gè)指針變量,用來(lái)指向一個(gè)結(jié)構(gòu)體類型的數(shù)據(jù)。第18頁(yè)/共57頁(yè)2、指向結(jié)構(gòu)體類型變量的指針變量在程序中,如果設(shè)置了一個(gè)指針變量來(lái)專門存放一種結(jié)構(gòu)體類型變量的地址,則該變量就是指向這種結(jié)構(gòu)體類型數(shù)據(jù)的指針變量,該變量的值就是存放某個(gè)結(jié)構(gòu)體類型數(shù)據(jù)的內(nèi)存單元的起始地址。第19頁(yè)/共57頁(yè)例如:structstudent{intnumber;charname[10];intage;floatscore;}/*定義結(jié)構(gòu)體類型*/.........structstudent*p;/*定義指向結(jié)構(gòu)體類型變量的指針變量*/.........⑴指向結(jié)構(gòu)體類型數(shù)據(jù)的指針變量一般說(shuō)明形式如下:
struct結(jié)構(gòu)體類型名變量名;第20頁(yè)/共57頁(yè)利用指向結(jié)構(gòu)體類型的指針變量引用結(jié)構(gòu)體變量成員的一般形式如下:(*指針變量名).成員名或指針變量名->成員名⑵指向結(jié)構(gòu)體類型變量的指針變量引用注意:①“->”是指向結(jié)構(gòu)體成員運(yùn)算符,“.”是取結(jié)構(gòu)體成員運(yùn)算符,它們的結(jié)合方式從左到右,優(yōu)先級(jí)別最高。②在程序中只能將結(jié)構(gòu)體類型變量的地址賦給一個(gè)指向結(jié)構(gòu)體類型的指針變量,一個(gè)指向結(jié)構(gòu)體類型的指針變量只能指向結(jié)構(gòu)體類型變量,不能指向變量的成員。第21頁(yè)/共57頁(yè)例如:structstudent{intnumber;charname[10];intage;floatscore;}structstudentstud1;.........structstudent*p1=stud1,*p2=stud1;(*p1).number=10001;(*p2).number=10002;.........printf(″%d,&d″,(*p1).number,(*p2).number);printf(″%d,&d″,p1->number,p2->number);第22頁(yè)/共57頁(yè)例8.8#include"stdio.h"structstudent{intnum;charname[20];charsex;floatscore;};main(){structstudentstu1={1001,"LiMing",'M',95.0};structstudent*p;p=&stu1;printf("%d,%s,%c,%.1f\n",stu1.num,,stu1.sex,stu1.score);printf("%d,%s,%c,%.1f\n",(*p).num,(*p).name,(*p).sex,(*p).score);printf("%d,%s,%c,%.1f\n",p->num,p->name,p->sex,p->score);}第23頁(yè)/共57頁(yè)在程序中,如果將一個(gè)結(jié)構(gòu)體類型數(shù)組的地址賦給一個(gè)結(jié)構(gòu)體類型的變量,那么該變量就是一個(gè)指向結(jié)構(gòu)體類型數(shù)組的指針變量??梢岳迷撝羔樧兞縼?lái)引用數(shù)組元素的各個(gè)成員。3、指向結(jié)構(gòu)體類型數(shù)組的指針對(duì)于指向結(jié)構(gòu)體類型數(shù)組的指針變量。其引用的方式和指向普通數(shù)組的指針變量的引用相類似。第24頁(yè)/共57頁(yè)例8.9#include"stdio.h"structstudent{intnum;char*name;charsex;floatscore;}boy[5]={{101,"Zhouping",'M',45},{102,"Zhangping",'M',62.5},{103,"Liufang",'F',92.5},{104,"Chengling",'F',87},{105,"Wangming",'M',58}};main(){structstudent*ps;printf("No.\tName\t\t\tSex\tScore\t\n");for(ps=boy;ps<boy+5;ps++)printf("%d\t%s\t\t%c\t%f\t\n",ps->num,ps->name,ps->sex,ps->score);}第25頁(yè)/共57頁(yè)注意:ps是指向結(jié)構(gòu)體類型數(shù)據(jù)的指針變量,只能將數(shù)組的地址或某個(gè)數(shù)組元素的地址賦給ps,不能將數(shù)組元素的成員或成員的地址賦給ps,否則,程序?qū)?huì)出錯(cuò)。例如:ps=boy;/*正確*/ps=&boy[0];/*正確*/ps=boy[0].num;/*錯(cuò)誤*/ps=&boy[0].num;/*錯(cuò)誤*/第26頁(yè)/共57頁(yè)1、結(jié)構(gòu)體類型數(shù)據(jù)與函數(shù)⑴結(jié)構(gòu)體類型變量的成員作函數(shù)參數(shù)在函數(shù)調(diào)用時(shí),可以將結(jié)構(gòu)體類型變量各成員的值作函數(shù)的實(shí)參進(jìn)行數(shù)據(jù)傳遞。其用法和用普通變量作函數(shù)實(shí)參是一樣的,屬于“值傳遞”方式。注意:在調(diào)用函數(shù)時(shí),應(yīng)注意實(shí)參與形參的類型保持一致。第27頁(yè)/共57頁(yè)main(){structstudenta;.........f(a.score);.........}#include"stdio.h"structstudent{intnum;charname[20];charsex;floatscore;};voidf(floatx){.........}例如:第28頁(yè)/共57頁(yè)C語(yǔ)言(ANSIC)允許使用結(jié)構(gòu)體變量作實(shí)參進(jìn)行數(shù)據(jù)傳遞,將主調(diào)函數(shù)中結(jié)構(gòu)體變量所占用內(nèi)存單元的內(nèi)容全部順序傳遞給形參。這是一種“值傳遞”方式,要求形參也必須是同類型的結(jié)構(gòu)體變量。⑵結(jié)構(gòu)體類型變量作函數(shù)參數(shù)第29頁(yè)/共57頁(yè)例8.10有一個(gè)結(jié)構(gòu)體變量stu,內(nèi)含學(xué)生學(xué)號(hào)、姓名和3門課的成績(jī)。要求分別編寫兩個(gè)不同的函數(shù)輸出學(xué)生的學(xué)號(hào)、姓名和3門課的成績(jī)及總成績(jī)。#include"stdio.h"#include"string.h"#defineFORMAT"%5d%9s%8.1f%8.1f%8.1f"structstudent{intnum;charname[20];floatscore[3];};
第30頁(yè)/共57頁(yè)voidpri1(structstudentstt){printf("numnamescore1score2score3sumscore\n");printf(FORMAT,stt.num,,stt.score[0],stt.score[1],stt.score[2]);}voidpri2(floatxx[]){floatsum;sum=xx[0]+xx[1]+xx[2];printf("%9.1f",sum);}main(){structstudentstu={1001,"LiMing",67.5,89.0,78.6};pri1(stu);pri2(stu.score);}第31頁(yè)/共57頁(yè)⑶指向結(jié)構(gòu)體類型變量的指針作為函數(shù)參數(shù)在程序中,如果用指向結(jié)構(gòu)體變量的指針作函數(shù)的實(shí)參,可以將結(jié)構(gòu)體變量的地址傳給形參,使實(shí)參和形參共同指向同一段存儲(chǔ)單元,得到函數(shù)的返回值。第32頁(yè)/共57頁(yè)例8.11有一個(gè)結(jié)構(gòu)體變量stu,內(nèi)含學(xué)生學(xué)號(hào)、姓名和3門課的成績(jī),利用函數(shù)編程按升序輸出學(xué)生的成績(jī)。#include"stdio.h"#include"string.h"#defineFORMAT"%5d%9s%8.1f%8.1f%8.1f"#defineN3structstudent{intnum;charname[20];floatscore[N];};第33頁(yè)/共57頁(yè)voidpri(structstudent*stt){inti,j;floatt;for(i=0;i<N;i++)for(j=0;j<N-1;j++)if(stt->score[j]>stt->score[j+1]){t=stt->score[j];stt->score[j]=stt->score[j+1];stt->score[j+1]=t;}}main(){structstudentstu={1001,"LiMing",67.5,89.0,78.6};structstudent*p=&stu;pri(p);printf(FORMAT,stu.num,,stu.score[0],stu.score[1],stu.score[2]);}第34頁(yè)/共57頁(yè)⑷結(jié)構(gòu)體類型數(shù)組作為函數(shù)參數(shù)在程序中也可以使用結(jié)構(gòu)體類型數(shù)組作函數(shù)的參數(shù),將該結(jié)構(gòu)體類型數(shù)組的地址傳給形參。例8.12有一個(gè)結(jié)構(gòu)體類型數(shù)組student,內(nèi)含幾個(gè)學(xué)生學(xué)號(hào)、姓名、性別和成績(jī)。要求編程計(jì)算這組學(xué)生的平均成績(jī),并統(tǒng)計(jì)不及格的人數(shù)。#include"stdio.h"#defineN5structstu{intnum;char*name;charsex;floatscore;};第35頁(yè)/共57頁(yè)voidave(structstu*ps){intc=0,i;floatave,s=0;for(i=0;i<N;i++,ps++){s+=ps->score;if(ps->score<60)c+=1;}ave=s/N;printf("average=%.1f\ncount=%d\n",ave,c);}main(){structstustudent[N]={{101,"Liping",'M',45.0},{102,"Zhangping",'M',62.5},{103,"Hefang",'F',92.5},{104,"Chengling",'F',87.0},{105,"Wangming",'M',58.0}};ave(student);}第36頁(yè)/共57頁(yè)⑸指向結(jié)構(gòu)體類型數(shù)組的指針作為函數(shù)參數(shù)在程序中,可以用指向結(jié)構(gòu)體類型數(shù)組的指針作函數(shù)參數(shù),將該結(jié)構(gòu)體類型數(shù)組的地址傳給形參。
例8.12中程序的main函數(shù)可以改寫為下面程序代碼。main(){structstustudent[N]={{101,"Liping",'M',45.0},{102,"Zhangping",'M',62.5},{103,"Hefang",'F',92.5},{104,"Chengling",'F',87.0},{105,"Wangming",'M',58.0}};structstu*p=student;ave(p);}第37頁(yè)/共57頁(yè)函數(shù)的返回值可以是某種類型的數(shù)據(jù),也可以是指向某種類型數(shù)據(jù)的指針。C語(yǔ)言允許函數(shù)調(diào)用時(shí),返回結(jié)構(gòu)體類型指針值。⑹返回值為結(jié)構(gòu)體類型的函數(shù)其函數(shù)原型如下:struct結(jié)構(gòu)體類型名*函數(shù)名(參數(shù)表列);第38頁(yè)/共57頁(yè)例8.14在一組的學(xué)生信息中查找某個(gè)學(xué)生的信息。如果找到,輸出該學(xué)生信息,否則輸出沒有找到。#include"stdio.h"#defineSIZE100#defineN6#defineFORMAT"%-11s%3d%8d%8d%8d\n"structstudent{charname[30];intnum;intscore[3];};/*定義結(jié)構(gòu)體類型*/第39頁(yè)/共57頁(yè)structstudent*search(structstudent*p,int*kk{charnam[30];structstudent*pp;printf("inputthenameofthestudentyouwanttolookfor\n");scanf("%s",nam);for(pp=p;pp<N+p;pp++)if(strcmp(pp->name,nam)==0){*kk=1;break;}returnpp;}voidprint(structstudent*stu){printf("\nNAMENo.SCORE1SCORE2SCORE3\n");printf("------------------------------------------------\n");printf(FORMAT,stu->name,stu->num,stu->score[0],stu->score[1],stu->score[2]);}第40頁(yè)/共57頁(yè)main(){intkk=0;structstudent*result;structstudentstud[N]={{"zhangsan",1001,75,80,68},{"lisi",1002,66,90,82},{"wangwu",1003,77,86,64},{"liuli",1005,66,70,72},{"zhouqi",1006,79,96,74},{"shunba",1007,76,79,92}};result=search(stud,&kk);if(kk>0)print(result);elseprintf("Notfound!");}第41頁(yè)/共57頁(yè)一、鏈表
鏈表是一種常見的、重要的、特殊的數(shù)據(jù)結(jié)構(gòu),是動(dòng)態(tài)進(jìn)行存儲(chǔ)分配的一種結(jié)構(gòu)。在C語(yǔ)言程序中,常用鏈表來(lái)代替結(jié)構(gòu)體數(shù)組,節(jié)約內(nèi)存資源。
1.鏈表第42頁(yè)/共57頁(yè)在結(jié)構(gòu)體變量中,如果定義最后一個(gè)成員為下一個(gè)結(jié)構(gòu)體變量的指針時(shí),就形成一種鏈表關(guān)系,&st1st1st10ZhangM18&st2WangF17&st3LiuM17NULLst2…h(huán)ead鏈表中的結(jié)構(gòu)體變量稱為“結(jié)點(diǎn)”,很明顯,鏈表有一個(gè)“頭指針”,圖中用head表示,還有一個(gè)“表尾”,圖中用NULL表示。每個(gè)結(jié)點(diǎn)都包含兩個(gè)部分:用戶所需的數(shù)據(jù)和下一個(gè)結(jié)點(diǎn)的地址。鏈表中的所有元素在內(nèi)存中不是連續(xù)存放的,要找到某一元素,必須先找到上一個(gè)元素,根據(jù)上一元素提供的地址才能找到下一個(gè)元素,如果不知道“頭指針”的值,整個(gè)鏈表無(wú)法訪問(wèn)。第43頁(yè)/共57頁(yè)有關(guān)鏈表的操作,除了建立鏈表以外,還有刪除結(jié)點(diǎn)、插入結(jié)點(diǎn)和鏈表的輸出操作,其相應(yīng)操作詳見206頁(yè)~215頁(yè)。第44頁(yè)/共57頁(yè)一、共用體的概念在程序中,為了節(jié)省內(nèi)存資源,經(jīng)常將幾個(gè)類型不同的數(shù)據(jù)存放到同一段內(nèi)存單元中,要保證這些數(shù)據(jù)正確存取,只能在某一具體時(shí)間段內(nèi)存放其中的一個(gè)數(shù)據(jù)。這種使幾個(gè)不同類型的數(shù)據(jù)共同占用同一段內(nèi)存的結(jié)構(gòu),稱為“共用體”類型結(jié)構(gòu)。第45頁(yè)/共57頁(yè)二、共用體類型的定義共用體類型的一般形式如下:union共用體名{類型名1成員名1;類型名2成員名2;
......類型名n成員名n;};例如:uniondata{charname[10];intage;floatscore;};注意:一個(gè)共用體類型包含若干個(gè)成員,每個(gè)成員的類型不一樣。共用體類型中的所有成員共同占用同一段存儲(chǔ)空間,在存儲(chǔ)時(shí)所占的內(nèi)存單元字節(jié)數(shù)等于其中最長(zhǎng)的成員所占內(nèi)存單元字節(jié)數(shù)。第46頁(yè)/共57頁(yè)三、共用體類型變量的定義共用體類型變量的定義,通常采取以下三種形式:1.先定義共用體類型,再定義共用體類型變量定義形式為:共用體類型名共用體變量名;例如:
uniondata{charname[10];intage;floatscore;}uniondatastt1,stt2;上述定義中,stt1,stt2為uniondata類型變量,存儲(chǔ)時(shí),各占10字節(jié)內(nèi)存單元。第47頁(yè)/共57頁(yè)2.在定義共用體類型的同時(shí)定義變量定義形式為:union共用體名{類型名1成員名1;類型名2成員名2;
......
類型名n成員名n;}變量名表列;例如:uniondata{charname[10];intage;floatscore;}stt1,stt2;
第48頁(yè)/共57頁(yè)3.直接定義共用體類型變量定義形式為:union{類型名1成員名1;類型名2成員名2;
...
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年南方科技大學(xué)馬克思主義基本原理概論期末考試模擬題含答案解析(必刷)
- 2025年長(zhǎng)治職業(yè)技術(shù)學(xué)院馬克思主義基本原理概論期末考試模擬題附答案解析(奪冠)
- 2025年鄭州亞歐交通職業(yè)學(xué)院中單招職業(yè)適應(yīng)性考試題庫(kù)帶答案解析
- 2025年松原職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)傾向性考試題庫(kù)帶答案解析
- 2025云南玉溪高新區(qū)融創(chuàng)投資有限公司招聘合同制工作人員2人筆試參考題庫(kù)附帶答案詳解
- 2025云南昆明理工大學(xué)設(shè)計(jì)研究院有限公司招聘17人筆試參考題庫(kù)附帶答案詳解
- 滲濾液安全培訓(xùn)
- 2025中鋁(雄安)礦業(yè)有限責(zé)任公司競(jìng)爭(zhēng)上崗招聘4人筆試參考題庫(kù)附帶答案詳解
- 2025中鐵二十三局高校畢業(yè)生招聘筆試歷年備考題庫(kù)附帶答案詳解2套試卷
- 2025中電海康集團(tuán)有限公司校園招聘筆試參考題庫(kù)附帶答案詳解
- 倒掛井壁法施工安全技術(shù)保證措施
- 2025年低空經(jīng)濟(jì)無(wú)人機(jī)災(zāi)害預(yù)警行業(yè)報(bào)告
- 2025年健康養(yǎng)生行業(yè)消費(fèi)者畫像與消費(fèi)需求研究報(bào)告
- 鍋爐班組級(jí)安全培訓(xùn)課件
- 安全生產(chǎn)明白人培訓(xùn)課件
- 襯膠施工方案
- 中國(guó)原發(fā)性閉角型青光眼診治方案專家共識(shí)(2025年)解讀
- 用戶界面設(shè)計(jì)規(guī)范及模板
- 2025年上海高考英語(yǔ)試卷及答案
- 黑龍江省大慶市2025年中考物理真題(含答案)
- (2025年標(biāo)準(zhǔn))代收款協(xié)議免責(zé)協(xié)議書
評(píng)論
0/150
提交評(píng)論