《二級C語言程序設計》第9章結(jié)構(gòu)體與共用體課件_第1頁
《二級C語言程序設計》第9章結(jié)構(gòu)體與共用體課件_第2頁
《二級C語言程序設計》第9章結(jié)構(gòu)體與共用體課件_第3頁
《二級C語言程序設計》第9章結(jié)構(gòu)體與共用體課件_第4頁
《二級C語言程序設計》第9章結(jié)構(gòu)體與共用體課件_第5頁
已閱讀5頁,還剩63頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第9章結(jié)構(gòu)體與共用體9.1結(jié)構(gòu)體numnameSexageaddr060001LiFangF18Wuhan060230LinHongF16Changsha060212WuQiangM18Beijing061122LiJunM17Zhengzhou060536ZhangXiaF17Shanghai上表中某一學生的數(shù)據(jù)是由學生的學號、姓名、性別、年齡、家庭地址等數(shù)據(jù)項組成的,這些數(shù)據(jù)項是一組邏輯上相關的數(shù)據(jù),如果將這些數(shù)據(jù)項分割開來孤立地考慮它們的屬性,將導致操作的不便或邏輯錯誤。在C語言中,將這種由多個不同類型的數(shù)據(jù)項組合在一起形成的數(shù)據(jù)類型,稱為結(jié)構(gòu)體類型。表9-1學生表9.1.1結(jié)構(gòu)體類型的定義結(jié)構(gòu)體類型定義的一般形式:struct標識符{

類型名1成員名1;類型名2成員名2;…類型名n成員名n;};9.1.1結(jié)構(gòu)體類型的定義例1對某一學生數(shù)據(jù)(由學生的學號、姓名、性別、年齡、家庭地址等數(shù)據(jù)項組成)的結(jié)構(gòu)體類型定義如下:structstudent{intnum;charname[20];charsex;intage;charaddr[30];};9.1.2結(jié)構(gòu)體變量的定義結(jié)構(gòu)體變量的定義有三種處理方式:(1)先定義結(jié)構(gòu)體類型,再定義結(jié)構(gòu)體變量。例1:structstudent{intnum;charname[20];charsex;intage;charaddr[30];};/*定義結(jié)構(gòu)體類型structstudent*/structstudenta,b;/*定義a、b為結(jié)構(gòu)體類型structstudent的變量*/9.1.2結(jié)構(gòu)體變量的定義(2)在定義結(jié)構(gòu)體類型的同時定義結(jié)構(gòu)體變量。例2:structstudent{intnum;charname[20];charsex;intage;charaddr[30];}a,b;9.1.2結(jié)構(gòu)體變量的定義(3)直接定義結(jié)構(gòu)類型變量。例3:struct

{intnum;charname[20];charsex;intage;charaddr[30];}a,b;9.1.3結(jié)構(gòu)體變量的引用對結(jié)構(gòu)體變量中的成員都可以像同類型的普通變量一樣進行各種運算。例3:a.num=060001+5;b.birthday.day++;(2)結(jié)構(gòu)體變量作為一個整體引用.結(jié)構(gòu)體變量不可以作為整體進行輸入輸出,但可以作為函數(shù)的參數(shù)或返回值而被整體引用,也可以將一個結(jié)構(gòu)體變量作為一個整體賦給另一個具有相同類型的結(jié)構(gòu)體變量。例1:structstudenta,b;…a=b;(3)引用結(jié)構(gòu)體變量的地址或成員的地址structstudenta,b;scanf("%d",&a.num);printf("%x",&a.num);printf("%x",&a);9.1.3結(jié)構(gòu)體變量的引用9.1.4結(jié)構(gòu)體變量的初始化結(jié)構(gòu)體變量的初始化形式有如下兩種:(1)struct標識符{類型名1成員名1;類型名2成員名2;…類型名n成員名n;}變量名={數(shù)據(jù)表};例1:structstudent{intnum;charname[20];charsex;intage;charaddr[30];}a={060001,"LiFang",'F',18,"Wuhan"};9.2結(jié)構(gòu)體數(shù)組9.2.1結(jié)構(gòu)體數(shù)組的定義結(jié)構(gòu)體數(shù)組定義的一般形式:結(jié)構(gòu)體類型名數(shù)組名[常量表達式];例1:structstudent{intnum;charname[20];charsex;intage;charaddr[30];};/*定義結(jié)構(gòu)體類型structstudent*/structstudenta[5];/*定義a[5]結(jié)構(gòu)體類型structstudent的數(shù)組*/9.2.2結(jié)構(gòu)體數(shù)組元素的引用格式:結(jié)構(gòu)體數(shù)組名[元素下標].結(jié)構(gòu)體成員名

例1:structstudent{intnum;charname[20];charsex;intage;charaddr[30];}a[5];a[0].num=060001;a[1].name="LinHong";一個結(jié)構(gòu)體數(shù)組元素相當于一個結(jié)構(gòu)體變量,其處理方法與結(jié)構(gòu)體變量的處理方法相同9.2.2結(jié)構(gòu)體數(shù)組元素的引用例2:structstudent{intnum;charname[20];charsex;intage;charaddr[30];}a[5];scanf("%d",&a[0].num);gets(a[0].name);scanf("%c",&a[0].sex);scanf("%d",&a[0].age);gets(a[0].addr);a[3]=a[0];printf("%x",&a[0].num);printf("%x",&a[0]);9.2.4應用舉例例9.1輸入如表9-1所示的學生情況登記表,按學號順序整理輸出該表。分析如下:1、定義學生類型及學生數(shù)組:2、輸入學生信息3、輸出學生信息(程序由學生和老師共同完成)structstudent{intnum;charname[20];charsex;intage;charaddr[30];}a[5];9.3結(jié)構(gòu)體指針結(jié)構(gòu)體指針變量:如果用一個指針變量指向一個結(jié)構(gòu)體變量,即存儲該結(jié)構(gòu)體變量所占據(jù)的內(nèi)存單元的起始地址,則該指針變量稱為結(jié)構(gòu)體指針變量。結(jié)構(gòu)體指針變量也可以用來指向結(jié)構(gòu)體數(shù)組中的元素。9.3.1結(jié)構(gòu)體指針變量的定義結(jié)構(gòu)體指針變量的定義形式如下:結(jié)構(gòu)體類型名*指針變量名;例如:structstudent*p,a;p=&a;9.3.3指向結(jié)構(gòu)體數(shù)組的指針對于已定義的結(jié)構(gòu)體數(shù)組,若用一個變量來存放該結(jié)構(gòu)體數(shù)組在內(nèi)存中的首地址,則該變量為指向結(jié)構(gòu)體數(shù)組的指針變量。例如:structstudent*p,a[5];p=a;例9.2用指向結(jié)構(gòu)體數(shù)組的指針處理例9.1(按學號順序整理輸出學生情況登記表。)9.4結(jié)構(gòu)體與函數(shù)1.結(jié)構(gòu)體變量作為函數(shù)的形參的三種形式:(1)以結(jié)構(gòu)體變量的成員作為參數(shù),傳遞結(jié)構(gòu)體變量的成員的值。(2)以結(jié)構(gòu)體變量作為參數(shù),直接傳遞結(jié)構(gòu)體變量的值。在ANSIC標準中允許用結(jié)構(gòu)變量作為函數(shù)的參數(shù)進行整體傳送,即直接將實參結(jié)構(gòu)體變量的各個成員的值逐個傳遞給形參結(jié)構(gòu)體變量的對應成員。注意,實參與形參必須是相同結(jié)構(gòu)體類型的變量。(3)以結(jié)構(gòu)體指針作為參數(shù),傳遞結(jié)構(gòu)體變量的地址。通過結(jié)構(gòu)體變量的整體傳遞可以實現(xiàn)函數(shù)參數(shù)的傳遞,但這要將結(jié)構(gòu)體變量的全部成員逐個傳送,特別是成員為數(shù)組時將會使傳送的時間和空間開銷很大,嚴重地降低了程序的效率。因此最好的辦法就是使用指針,即用指針變量作函數(shù)參數(shù)進行傳送。這時由實參傳遞給函數(shù)形參的只是地址,從而減少了時間和空間的開銷。例9.3利用函數(shù)完成結(jié)構(gòu)體變量的輸入輸出。(閱讀書中程序)2.結(jié)構(gòu)體類型作為函數(shù)的返回值類型其一般定義形式:結(jié)構(gòu)體類型名函數(shù)名(形參表){函數(shù)體}例(p168)9.4結(jié)構(gòu)體與函數(shù)9.5.1鏈表的概念例1:利用C語言在計算機中存儲三個學生的計算機成績,如果有定義inta[3],則其內(nèi)存單元分配情況如下:…80a[0]75a[1]90a[2]…9.5.1鏈表的概念例2:用鏈表存儲方式來存儲三個同學的計算機成績?!?0022036758090……200220582058head80headNULL7590可直觀地表示如下:9.5.2動態(tài)分配函數(shù)3.free函數(shù)函數(shù)格式:voidfree(void*ptr);函數(shù)功能:釋放由指針變量ptr指向的內(nèi)存區(qū)域。其中,ptr是一個指針變量,指向最近一次調(diào)用函數(shù)malloc或calloc時所分配的存儲空間的首地址。通過函數(shù)free將已分配的內(nèi)存區(qū)域交還系統(tǒng),使系統(tǒng)可以重新對其進行分配。例3:int*p;p=(int*)calloc(3,sizeof(int));…free(p);9.5.3鏈表的基本操作1.鏈表節(jié)點的定義鏈表中的任一個節(jié)點都包括兩個數(shù)據(jù)項,一個是節(jié)點自身的數(shù)據(jù)信息,稱為節(jié)點的數(shù)據(jù)域,另一個是下一節(jié)點的地址值,稱為節(jié)點的指針域。

structnode{datatypedata;structnode*next;};

datatype是數(shù)據(jù)域的類型,可以是前面所介紹的任意C語言類型。顯然,鏈表節(jié)點的指針域存放的地址類型與它自身的類型是相同的。例1:存儲三個同學的計算機成績的鏈表存儲方式如下:80headNULL7590上述鏈表中節(jié)點的定義如下:structnode{intdata;structnode*next;};鏈表的頭指針定義如下:structnode*head;9.5.3鏈表的基本操作2.鏈表的基本操作鏈表的基本操作主要有鏈表的建立、節(jié)點的訪問、節(jié)點的插入、節(jié)點的刪除等。(1)鏈表的建立。鏈表的建立是一個動態(tài)存儲空間分配和形成鏈接關系的過程。用尾插法建立鏈表的過程如下:1)建立一個空鏈表,即head=NULL。2)請分配新節(jié)點存儲單元,對新節(jié)點的數(shù)據(jù)域和指針域賦值。由于新插入的節(jié)點總是尾節(jié)點,因此,它的指針域的值為空(即NULL)。3)將新節(jié)點鏈接到鏈表的尾部:4)重復步驟2)~3),繼續(xù)插入新節(jié)點直到結(jié)束。例1:存儲三個同學的計算機成績的鏈表存儲方式如下:80headNULL7590上述鏈表中節(jié)點的定義如下:structnode{intdata;structnode*next;};鏈表的頭指針定義如下:structnode*head;9.5.3鏈表的基本操作例9.4用鏈表存儲學生的計算機成績。程序段如下:structnode*creat(){structnode*head,*p,*q;n=0;head=NULL;p=(structnode*)malloc(LEN);scanf("%d",&p->data);p->next=NULL;while(p->data!=-1){n=n+1;if(n==1)head=p;elseq->next=p;q=p;p=(structnode*)malloc(LEN);scanf("%d",&p->data);p->next=NULL;}return(head);}

#defineNULL0#defineLENsizeof(structnode)structnode{intdata;structnode*next;};intn;80headNULL7590NULLqp(2)鏈表節(jié)點的訪問。鏈表節(jié)點的訪問過程如下:1)取鏈表頭指針head。2)用一個指針p指向鏈表的第一個節(jié)點,即p=head。3)訪問p所指節(jié)點。4)移動指針p,使它指向下一節(jié)點,即p=p->next。5)重復步驟3)和4),直到指針p為空。9.5.3鏈表的基本操作例9.5輸出例9.4建立的鏈表中所有學生的計算機成績。程序段如下:#defineNULL0#defineLENsizeof(structnode)structnode{intdata;structnode*next;};voidprint(structnode*head){structnode*p;p=head;while(p!=NULL){printf("%d",p->data);p=p->next;}}80headNULL7590ppp(3)鏈表節(jié)點的插入。其操作過程主要有兩個子過程:①確定插入位置;②插入新節(jié)點。插入條件的要求主要有以下幾種情況:新節(jié)點插入在第i個節(jié)點之前(或后)。新節(jié)點插入在節(jié)點數(shù)據(jù)等于某一指定數(shù)據(jù)的節(jié)點之前(或后)。新節(jié)點插入在一個節(jié)點數(shù)據(jù)有序的鏈表中,保證插入新節(jié)點后鏈表仍然有序。下面以新節(jié)點插入在節(jié)點數(shù)據(jù)等于某一指定數(shù)據(jù)的節(jié)點之前的情況分例介紹節(jié)點插入操作的算法。操作過程如下:1)取鏈表頭指針head。2)申請分配新節(jié)點存儲單元,對新節(jié)點的數(shù)據(jù)域賦值。3)如果head等于NULL,即鏈表為空,不存在指定數(shù)據(jù)的節(jié)點,則新節(jié)點插入到鏈表中,成為鏈表中惟一的節(jié)點,即將新節(jié)點的地址賦給頭指針head,賦新節(jié)點指針域的值為NULL。4)如果head不等于NULL,用一個指針p指向鏈表的第一個節(jié)點,即p=head,判斷p所指節(jié)點是否為指定節(jié)點,如果不是,移動指針p,使它指向它的下一節(jié)點,重復判斷過程,直到p所指節(jié)點是指定節(jié)點或p所指節(jié)點的指針域的值為NULL。5)如果p所指節(jié)點是指定節(jié)點,將新節(jié)點插入在p所指節(jié)點之前,即p的前一節(jié)點的指針域的值為新節(jié)點的地址,新節(jié)點的指針域的值為p。6)如果p所指節(jié)點不是指定節(jié)點,但p所指節(jié)點的指針域的值為NULL,則鏈表中不存在指定數(shù)據(jù)的節(jié)點,新節(jié)點插入到鏈尾,即p所指節(jié)點之后,賦p所指節(jié)點的指針域的值為新節(jié)點的地址,新節(jié)點指針域的值為NULL。7)返回操作后鏈表的頭指針。例9.6在例9.4建立的鏈表中某一計算機成績值之前插入一個學生的計算機成績。其過程示意圖:q80head75xysp新結(jié)點指向所搜結(jié)點的前驅(qū)結(jié)點指向要找的結(jié)點程序段如下:if(x==p->data){if(p==head){s->next=head;head=s;}else{s->next=p;q->next=s;}}else{s->next=p->next;p->next=s;}return(head);}structnode*insert(structnode*head,intx,inty){structnode*p,*q,*s;s=(structnode*)malloc(LEN);s->data=y;if(head==NULL){s->next=head;head=s;return(head);}p=head;while(p->data!=x&&p->next!=NULL){q=p;p=p->next;}

(4)鏈表節(jié)點的刪除。鏈表節(jié)點的刪除操作同樣包括兩個子過程:①確定刪除節(jié)點的位置;②刪除節(jié)點。下面介紹刪除節(jié)點數(shù)據(jù)等于某一指定數(shù)據(jù)的節(jié)點的操作過程。1)取鏈表頭指針head。2)如果head等于NULL,即鏈表為空,不存在指定數(shù)據(jù)的節(jié)點,刪除操作失敗,輸出相關信息。3)如果head不等于NULL,用一個指針p指向鏈表的第一個節(jié)點,即p=head,判斷p所指節(jié)點是否為指定節(jié)點,如果不是,移動指針p,使它指向它的下一節(jié)點,重復判斷過程,直到p所指節(jié)點是指定節(jié)點或p所指節(jié)點的指針域的值為NULL。4)如果p所指節(jié)點是指定節(jié)點,刪除該節(jié)點,即p所指節(jié)點指針域的值賦給其前一節(jié)點的指針域。5)如果p所指節(jié)點不是指定節(jié)點,但p所指節(jié)點的指針域的值為NULL,則鏈表中不存在指定數(shù)據(jù)的節(jié)點,刪除操作失敗,輸出相關信息。6)返回操作后鏈表的頭指針。9.5.3鏈表的基本操作例9.7在例9.4建立的鏈表中刪除某一指定計算機成績的節(jié)點。q80headx80p指向要刪除結(jié)點指向要刪除結(jié)點前驅(qū)結(jié)點9.5.3鏈表的基本操作程序段如下:#defineNULL0#defineLENsizeof(structnode)structnode{intdata;structnode*next;};structnode*del(structnode*head,intx){structnode*p,*q;if(head==NULL){printf("該鏈表是空表。");return(head);}p=head;while(p->data!=x&&p->next!=NULL){q=p;p=p->next;}if(x==p->data){if(p==head)head=p->next;elseq->next=p->next;}elseprintf("找不到該節(jié)點。");return(head);}9.6.1共用體類型的定義其一般形式為:union標識符{類型名1成員名1;類型名2成員名2;…類型名n成員名n;};說明:(1)union是關鍵字,是共用體類型的標志。(2)標識符是共用體名,是用戶自己定義的標識符,與關鍵字union共同構(gòu)成共用體類型名。(3)花括號“{}”中是組成該共用體類型的成員數(shù)據(jù)項,或稱為共用體中的分量,由成員類型和成員名組成。(4)共用體成員的數(shù)據(jù)類型可以是簡單類型、數(shù)組、指針或結(jié)構(gòu)等。(5)共用體類型的長度是共用體成員中的最大長度。9.6.1共用體類型的定義例如:如果有定義:unionxy{charch;inta[3];floatb;);共用體類型unionxy的存儲單元中各成員占用空間情況如圖:則共用體類型unionxy的長度是6(占用內(nèi)存的字節(jié)數(shù))。……cha[0]a[1]a[2]b9.6.2共用體變量的定義共用體變量定義的一般形式:共用體類型名變量名表;共用體變量的定義有如下三種處理方式:(1)先定義共用體類型,再定義共用體變量。例1:unionxy{charch;inta[3];floatb;};/*定義共用體類型unionxy*/unionxyx,y;/*定義x、y為共用體類型unionxy的變量*/9.6.2共用體變量的定義(2)在定義共用體類型的同時定義共用體變量。例2:unionxy{charch;inta[3];floatb;}x,y;(3)直接定義共用類型變量。例3:union{charch;inta[3];floatb;}x,y;9.6.3共用體變量的引用引用形式如下:共用體變量名.成員名例如:unionxy{charch;inta[3];floatb;}x,y;x.ch='m';y.a[0]=20;說明:(1)對同一共用體的不同成員進行賦值后,共用體變量中存儲的是最后一次成員的賦值。(2)不能直接使用共用體變量名進行輸入輸出。(3)可以直接使用共用體變量名對一個同類型的共用體變量賦值。(4)共用體變量名可以作為函數(shù)參數(shù)。(5)不能對共用體變量進行初始化。(6)可以定義共用體類型的數(shù)組。(7)可以定義共用體類型的指針,也可以使用共用體類型的指針作函數(shù)參數(shù)。引用指針指向共用體的成員同樣使用運算符“->”9.7枚舉所謂枚舉,是將具有相同屬性的一類數(shù)據(jù)值一一列舉。枚舉是一個已命名的一組常量的集合。例如:表示星期的(標識符常量)Sunday,Monday,Tuesday,Wednesday,Thursday,F(xiàn)riday,Saturday就是一個枚舉。枚舉是C語言中的簡單類型而非構(gòu)造類型,它的值域是有窮的,可以一一列舉出來,變量的取值只限于列舉出來的值的范圍。9.7.1枚舉類型的定義其形式為:enum枚舉名{標識符1[=整型常數(shù)],標識符2[=整型常數(shù)],…標識符n[=整型常數(shù)],};說明:(1)enum是關鍵字,是枚舉類型的標志。(2)標識符是枚舉名,是用戶自己定義的標識符,與關鍵字enum共同構(gòu)成枚舉類型名。(3)花括號“{}”中的“標識符1,標識符2,…,標識符n”是所定義枚舉類型的全部取值,通常將這些標識符稱為“枚舉元素”或“枚舉常量”。這些標識符是用戶定義的標識符,一般是所代表事物的名稱。(4)枚舉中每個標識符后的結(jié)束符是“,”,而不是“;”,最后一個標識符后可省略“,”。(5)如果枚舉沒有初始化,即省掉“=整型常數(shù)”時,則從第一個標識符開始,順次賦給標識符整型常數(shù)0,1,2,…。但當枚舉中的某個標識符被賦值后(可以賦負數(shù)),其后的標識符按依次加1的規(guī)則確定其值。9.7.1枚舉類型的定義例如:enumweekday{Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday};9.7.2枚舉變量的定義枚舉變量定義的一般形式:枚舉類型名變量名表;枚舉變量的定義有如下三種處理方式:(1)先定義枚舉類型,再定義枚舉變量。例1:enumweekday{Sunday,Monday,Tuesday,Wedneday,Thursday,Friday,Saturday};/*定義枚舉類型enumweekday*/enumweekdayx,y;/*定義x?y為枚舉類型enumweekday的變量*/9.7.2枚舉變量的定義(2)在定義枚舉類型的同時定義枚舉變量。例2:enumweekday{Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday}x,y;(3)直接定義枚舉類型變量。例3:enum{Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday}x,y;9.7.3枚舉變量的應用(1)枚舉變量取枚舉說明結(jié)構(gòu)中的某個標識符常量后,其值可認為是標識符對應的常數(shù)。例1:enumweekday{Sunday=0,Monday,Tuesday,Wedneday,Thursday,Friday,Saturday}x,y;

x=Friday;y=Tuesday;即x的值為5,y的值為2。9.7.3枚舉變量的應用(2)不能直接給一個枚舉變量賦一個整數(shù),但經(jīng)過強制類型轉(zhuǎn)換后可以實現(xiàn)賦值。例2:x=5;是不合法的。x=(enumweekday)5;是合法的

(3)枚舉變量的值不能直接輸入輸出,一般通過下面例3的方式實現(xiàn)。例3:enumweekday{Sunday=0,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday}x;

intn;scanf("%d",&n)switch(n){case0:x=Sunday;case1:x=Monday;case2:x=Tuesday;case3:x=Wednesday;case4:x=Thursday;case5:x=Friday;case6:x=Saturday;}

switch(x){caseSunday:printf("Sunday");caseMonday:printf("Monday");caseTuesday:printf("Tuesday");caseWednesday:printf("Wednesday");caseThursday:printf("Thursday");caseFriday:printf("Friday");caseSaturday:printf("Saturday");}枚舉變量輸入枚舉變量輸出9.7.3枚舉變量的應用(4)枚舉值可以進行比較。例4:enumweekday{Sunday=0,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday}x;if(x==Friday)printf("今天是周末!");if(x<Saturday&&x>Sunday)printf("今天要工作!");9.8自定義類型自定義類型是將一個數(shù)據(jù)類型定義一個新的名字。自定義類型的格式為:typedef類型名標識符;例如:typedefintIN;/*定義整型int的新類型名為IN*/INx;/*定義IN類型(即int)的變量x*/typedefstructstudent{charname[8];intclass;charsubclass[6];floatmath,phys,chem,engl,biol;}ST; /*定義structstudent的新類型名為ST*/STy; /*定義ST類型(即structstudent)的變量y*/9.10典型試題詳解1.設有如下說明語句:structex{intx;floaty;charz;}example;則下面的敘述中不正確的是________。A)struct是結(jié)構(gòu)體類型的關鍵字 B)example是結(jié)構(gòu)體類型名C)x、y、z都是結(jié)構(gòu)體成員名 D)structex是結(jié)構(gòu)體類型正確答案:B(知識點:結(jié)構(gòu)體類型及結(jié)構(gòu)體變量的定義)試題分析:example是結(jié)構(gòu)體類型的變量名。9.10典型試題詳解2.設有如下定義:structss{charname[10];intage;charsex;}std[3],*p=std;下面各輸入語句中錯誤的是________。A)scanf("%d",&(*p).age); B)scanf("%s",&);C)scanf("%c",&std[0].sex); D)scanf("%c",&(p->sex));正確答案:B(知識點:結(jié)構(gòu)體數(shù)組、指向結(jié)構(gòu)體數(shù)組的指針、結(jié)構(gòu)體變量的引用)9.10典型試題詳解3.設有如下定義:structsk{inta;floatb;}data;int*p;若要使p指向data中的a域,正確的賦值語句是________。A)p=&a B)p=data.a; C)p=&data.a D)*p=data.a正確答案:C(知識點:結(jié)構(gòu)體成員地址的引用、指向結(jié)構(gòu)體成員的指針)9.10典型試題詳解4.以下選項中不能正確把c1定義成結(jié)構(gòu)體變量的是________。A)typedefstruct B)structcolorc1{intred; {intred;intgreen; intgreen;intblue;}COLOR intblue;};COLORc1;C)structcolor D)struct{intred;

溫馨提示

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

評論

0/150

提交評論