(6.41)-第40課(9.2節(jié)-結(jié)構(gòu)體數(shù)組及指針)_第1頁
(6.41)-第40課(9.2節(jié)-結(jié)構(gòu)體數(shù)組及指針)_第2頁
(6.41)-第40課(9.2節(jié)-結(jié)構(gòu)體數(shù)組及指針)_第3頁
(6.41)-第40課(9.2節(jié)-結(jié)構(gòu)體數(shù)組及指針)_第4頁
(6.41)-第40課(9.2節(jié)-結(jié)構(gòu)體數(shù)組及指針)_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

結(jié)構(gòu)體數(shù)組及指針結(jié)構(gòu)體和共同體結(jié)構(gòu)體數(shù)組可以定義結(jié)構(gòu)體數(shù)組來存放批量數(shù)據(jù)struct

student{intnum;charname[20];charsex;intage;};structstudentstu[2];numnamesexagenumnamesexagestu[0]stu[1]29字節(jié)定義形式一:結(jié)構(gòu)體數(shù)組定義形式二:形式二:直接定義struct

student{intnum;charname[20];charsex;intage;}stu[2];形式三:直接定義struct{intnum;charname[20];charsex;intage;

}stu[2];定義形式三:結(jié)構(gòu)體數(shù)組初始化struct結(jié)構(gòu)體類型名結(jié)構(gòu)數(shù)組名[數(shù)組長度]={初始數(shù)據(jù)};struct

student{

int

num;charname[20];charsex;

intage;

}stu[3]={{100,“WangLin”,‘M’,20},

{101,“LiGang”,‘M’,19},

{110,“LiuYan”,‘F’,19}};全部初始化時(shí)長度可省按順序定義時(shí):內(nèi)層括號可以省略結(jié)構(gòu)體數(shù)組元素的引用stu[0].num=1001;strcpy(stu[0].name,“wang”);stu[0].sex=‘F’;成員引用:stu[1]=stu[0];整體引用:指向結(jié)構(gòu)體變量的指針存放結(jié)構(gòu)體變量所占的內(nèi)存空間的首地址定義形式:struct結(jié)構(gòu)體名*結(jié)構(gòu)體指針變量名;numnamesexagestupstructstudent{intnum;charname[20];charsex;intage;}stu;structstudent*p=&stu;例使用結(jié)構(gòu)體指針變量引用成員structstudentstu1;structstudent*p=&stu1;結(jié)構(gòu)體變量名.成員名stu.num

=101;(*結(jié)構(gòu)體指針名).成員名

(*p).num=101;結(jié)構(gòu)體指針名

成員名p

num

=101;指向運(yùn)算符優(yōu)先級:1結(jié)合方向:從左向右()不能少!以下三種形式等價(jià):例指向結(jié)構(gòu)體數(shù)組的指針結(jié)構(gòu)體數(shù)組及其元素可用指針變量來指向數(shù)組首地址賦給指向結(jié)構(gòu)體類型的指針變量時(shí),當(dāng)指針變量增1時(shí),指向下一個(gè)數(shù)組元素指向結(jié)構(gòu)體數(shù)組的指針#include<stdio.h>structstudent{intnum;charname[20];charsex;intage;}stu[3]={{10101,"LiLin",'M',18},{10102,"ZhangFun",'M',19},{10104,"WangMin",'F',20}};voidmain(){structstudent*p;for(p=stu;p<stu+3;p++)printf(“%d%s%c%d\n”,(*p).num,p

name,(*p).sex,p

age);}numnamesexagestu[0]pstu[1]stu[2]p+1例例struct

s{intx;inty;}data[4]={10,100,20,200,30,300,40,400};voidmain(){structs*pointer=data;printf(“%d\n”,++pointer

x);printf(“%d\n”,(++pointer)

y);printf(“%d\n”,(pointer++)

x);printf(“%d\n”,(pointer)

y++);}運(yùn)行結(jié)果:11 20020 300取x值加1后輸出地址加1后再取y值先取x值地址再加1y值輸出后再加1區(qū)分以下運(yùn)算

用結(jié)構(gòu)體變量和指向結(jié)構(gòu)體的指針作函數(shù)參數(shù)用指向結(jié)構(gòu)體變量或數(shù)組的指針作實(shí)參----地址傳遞傳遞的是結(jié)構(gòu)體變量的地址用結(jié)構(gòu)體變量作參數(shù)----值傳遞將結(jié)構(gòu)體變量所占的內(nèi)存單元的內(nèi)容全部順序傳遞給形參,要求形參與實(shí)參同類型。函數(shù)調(diào)用是單值傳遞,且形參占用內(nèi)存單元,若形參的值被改變,不會返回主調(diào)函數(shù)【例1:】結(jié)構(gòu)體變量stu有學(xué)號、姓名和成績,在main函數(shù)中賦值,在print函數(shù)中打印輸出#include<stdio.h>structstudent{intnum;charname[20];floatscore;};voidmain(){voidprint(structstudent);structstudentstu;//定義為局部結(jié)構(gòu)體類型變量scanf("%d%s%f",&stu.num,,&stu.score);

//輸入各成員的值print(stu);//調(diào)用print函數(shù),結(jié)構(gòu)體變量作實(shí)參}voidprint(structstudentstu){printf("%d%s%f\n",stu.num,,stu.score);}無"&"【例2:】改用結(jié)構(gòu)體變量的指針作實(shí)參#include<stdio.h>structstudent{intnum;charname[20];floatscore;};voidmain(){voidprint(structstudent*);structstudentstu;//定義為局部結(jié)構(gòu)體類型變量scanf("%d%s%f",&stu.num,,&stu.score);

//輸入各成員的值print(&stu

溫馨提示

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

評論

0/150

提交評論