




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
第9講結(jié)構(gòu)體與指針、函數(shù)本講內(nèi)容:(1)結(jié)構(gòu)體類型的指針變量(2)結(jié)構(gòu)體與函數(shù)第9講結(jié)構(gòu)體與指針、函數(shù)本講內(nèi)容:17.4.1指向結(jié)構(gòu)體變量的指針1.定義structstudent{charname[20];intage;ints1,s2;}stu={"Mary",19,78,86};structstudent
*p;p=&stu;
struct
結(jié)構(gòu)體名*結(jié)構(gòu)體變量名Mary197886stu2010203020342038p2010結(jié)構(gòu)體的地址為結(jié)構(gòu)體第一個成員的地址。p=&;是否可以?
不可以,類型不匹配。
p=(structstudent*)&;改為:7.4.1指向結(jié)構(gòu)體變量的指針1.定義struct27.4.1指向結(jié)構(gòu)體變量的指針2.成員的引用格式(1)結(jié)構(gòu)體變量名.成員名
stu.age(2)(*指針變量名).成員名
(*p).age(3)指針變量名->成員名
p->age指向運算符p->age++分析:++p->age等價于(p->age)++等價于++(p->age)不等于(++p)->agep->age類型?不是指針類型structstudent{charname[20];intage;ints1,s2;};structstudent
stu,*p;p=&stu;
gets(
);(*p).age
=21;p->s1
=87;p->s2
=90;7.4.1指向結(jié)構(gòu)體變量的指針2.成員的引用格式(2)31.定義structstudent
a[3],*p
;7.4.2指向結(jié)構(gòu)體數(shù)組的指針2.使用for(
p=a;p<a+3;p++
)
{gets(
p->name
);
scanf("%d%d%d",&p->age,&p->s1,&p->s2);}
賦初值為數(shù)組名p++表示使指針指向下一個結(jié)構(gòu)體,而不是下一個成員Mary217886Alex209080Mike197568st[0]st[1]st[2]pp'p''1.定義structstudenta[3]47.4.2指向結(jié)構(gòu)體數(shù)組的指針?biāo)伎迹?.(++p)->age先使p加1,然后的到p->age的值先得到p->age的值,然后使p加12.(p++)->age3.++p->age4.p->age++先使p->age,然后的到p->age的值先得到p->age的值,然后使p->age加17.4.2指向結(jié)構(gòu)體數(shù)組的指針?biāo)伎迹?.(++p)->a51.函數(shù)實參和形參都用結(jié)構(gòu)體變量,參數(shù)之間為值傳遞實參結(jié)構(gòu)體變量各成員的值依次傳給形參結(jié)構(gòu)體變量7.5.1
結(jié)構(gòu)體變量作為函數(shù)參數(shù)
structstudent{charname[20];intage;ints1,s2;};voidmain(){structstudent
stu={"Alex",22,98,100};
aaa(stu);printf("%d",stu.age);}voidaaa(structstudent
sss){sss.age=33;}nameages1s2Alex2298100nameages1s2stusssAlex2298100331.函數(shù)實參和形參都用結(jié)構(gòu)體變量,參數(shù)之間為值傳遞
結(jié)構(gòu)體變量作為函數(shù)參數(shù)例1輸入任意日期,計算該天是本年中第幾天。使用函數(shù)計算天數(shù)。分析:1.日期如何表示?定義日期結(jié)構(gòu)體。structdate{intyear;intmonth;intday;};2.函數(shù)如何設(shè)計?函數(shù)形參(輸入):日期結(jié)構(gòu)體變量函數(shù)返回值(輸出):天數(shù)intfun(structdated)函數(shù)原形:7.5.1結(jié)構(gòu)體變量作為函數(shù)參數(shù)例1輸入任意日期,計算77.5.1
結(jié)構(gòu)體變量作為函數(shù)參數(shù)3.如何計算?如1999.2.1231+12如1999.3.1331+28
+13如2000.3.1331+29+13天數(shù)=前幾個月份天數(shù)之和+當(dāng)月第幾天考慮閏年如何計算前幾個月天數(shù)之和?for(i=1;i<d.month;i++)
{switch(i){case1:case3:case5:case7:case8:case10:
case12:t=31;break;case4:case6:case9:case11:t=30;break;case2:if(d.year%4==0&&d.year%100!=0||d.year%400==0)t=29;elset=28;}
days=days+t;
}7.5.1結(jié)構(gòu)體變量作為函數(shù)參數(shù)3.如何計算?如19987.5.1
結(jié)構(gòu)體變量作為函數(shù)參數(shù)intfun(structdated){intdays=0,i,t;
for(i=1;i<d.month;i++)
{switch(i){case1:…}
days=days+t;
}
days=days+d.day;returndays;}計算前幾個月的天數(shù)之和加上當(dāng)月天數(shù)7.5.1結(jié)構(gòu)體變量作為函數(shù)參數(shù)intfun(struc97.5.1
結(jié)構(gòu)體變量作為函數(shù)參數(shù)voidmain(){structdated;intdays;
scanf("%d%d%d",&d.year,&d.month,&d.day);
days=fun(d);printf("dayofyearis:%d\n",days);}structdate{intyear;intmonth;intday;};輸入日期傳遞整個日期結(jié)構(gòu)體到函數(shù)定義日期結(jié)構(gòu)體7.5.1結(jié)構(gòu)體變量作為函數(shù)參數(shù)voidmain()st107.5.2
結(jié)構(gòu)體指針作為函數(shù)參數(shù)2.指向結(jié)構(gòu)體變量(數(shù)組)的指針做實參,將結(jié)構(gòu)體變量(數(shù)組)的地址傳給形參
structstudent{charname[20];intage;ints1,s2;};voidmain(){structstudent
stu,*p;
p=&stu;
aaa(p);
printf("%d",stu.age);}voidaaa(structstudent*sss){sss->age=33;}Alex2298100stup100010201024102833sss100010007.5.2結(jié)構(gòu)體指針作為函數(shù)參數(shù)2.指向結(jié)構(gòu)體變量(數(shù)組11例2按成績對學(xué)生信息進行從高到底的排序#include<stdio.h>#defineN30structstud{intn;charname[10];ints;};7.5.2
結(jié)構(gòu)體指針作為函數(shù)參數(shù)voidsort(structstud
*p
){inti,j;
structstud
temp;
for(i=0;i<N-1;i++)for(j=i+1;j<N;j++)
if((p+i)->s<(p+j)->s)
{temp=*(p+i);*(p+i)=*(p+j);*(p+j)=temp;}}注意進行比較的是元素st[i]和st[j]的成績成員s,但進行交換的是元素st[i]和st[j]例2按成績對學(xué)生信息進行從高到底的排序#include12voidmain(){
inti;structstud
st[N];
for(i=0;i<N;i++)
scanf("%d%s%d",&st[i].n,st[i].name,&st[i].s);
sort(st);for(i=0;i<N;i++)
printf("%4d%10s%4d",st[i].n,st[i].name,st[i].s);
}7.5.2
結(jié)構(gòu)體指針作為函數(shù)參數(shù)//傳遞的結(jié)構(gòu)體數(shù)組名voidmain()7.5.2結(jié)構(gòu)體指針作為函數(shù)參數(shù)137.5.3
函數(shù)返回值為結(jié)構(gòu)體類型格式:結(jié)構(gòu)體類型函數(shù)名(形參表){函數(shù)體;}例3編寫函數(shù)輸入結(jié)構(gòu)體變量,在主函數(shù)中輸出
structstudent{intnum;charname[20];floatscore;};structstudentinput(){structstudentb;
scanf("%d%s%f",&b.num,,&b.score);returnb;}voidmain(){structstudentstu;stu=input();printf("%d,%s,%5.2f\n",stu.num,,stu.score);}7.5.3函數(shù)返回值為結(jié)構(gòu)體類型格式:結(jié)構(gòu)體類型函數(shù)名(14實驗實驗:P99實驗1(3)Classisover實驗實驗:P99實驗1(3)Classisover15第9講結(jié)構(gòu)體與指針、函數(shù)本講內(nèi)容:(1)結(jié)構(gòu)體類型的指針變量(2)結(jié)構(gòu)體與函數(shù)第9講結(jié)構(gòu)體與指針、函數(shù)本講內(nèi)容:167.4.1指向結(jié)構(gòu)體變量的指針1.定義structstudent{charname[20];intage;ints1,s2;}stu={"Mary",19,78,86};structstudent
*p;p=&stu;
struct
結(jié)構(gòu)體名*結(jié)構(gòu)體變量名Mary197886stu2010203020342038p2010結(jié)構(gòu)體的地址為結(jié)構(gòu)體第一個成員的地址。p=&;是否可以?
不可以,類型不匹配。
p=(structstudent*)&;改為:7.4.1指向結(jié)構(gòu)體變量的指針1.定義struct177.4.1指向結(jié)構(gòu)體變量的指針2.成員的引用格式(1)結(jié)構(gòu)體變量名.成員名
stu.age(2)(*指針變量名).成員名
(*p).age(3)指針變量名->成員名
p->age指向運算符p->age++分析:++p->age等價于(p->age)++等價于++(p->age)不等于(++p)->agep->age類型?不是指針類型structstudent{charname[20];intage;ints1,s2;};structstudent
stu,*p;p=&stu;
gets(
);(*p).age
=21;p->s1
=87;p->s2
=90;7.4.1指向結(jié)構(gòu)體變量的指針2.成員的引用格式(2)181.定義structstudent
a[3],*p
;7.4.2指向結(jié)構(gòu)體數(shù)組的指針2.使用for(
p=a;p<a+3;p++
)
{gets(
p->name
);
scanf("%d%d%d",&p->age,&p->s1,&p->s2);}
賦初值為數(shù)組名p++表示使指針指向下一個結(jié)構(gòu)體,而不是下一個成員Mary217886Alex209080Mike197568st[0]st[1]st[2]pp'p''1.定義structstudenta[3]197.4.2指向結(jié)構(gòu)體數(shù)組的指針?biāo)伎迹?.(++p)->age先使p加1,然后的到p->age的值先得到p->age的值,然后使p加12.(p++)->age3.++p->age4.p->age++先使p->age,然后的到p->age的值先得到p->age的值,然后使p->age加17.4.2指向結(jié)構(gòu)體數(shù)組的指針?biāo)伎迹?.(++p)->a201.函數(shù)實參和形參都用結(jié)構(gòu)體變量,參數(shù)之間為值傳遞實參結(jié)構(gòu)體變量各成員的值依次傳給形參結(jié)構(gòu)體變量7.5.1
結(jié)構(gòu)體變量作為函數(shù)參數(shù)
structstudent{charname[20];intage;ints1,s2;};voidmain(){structstudent
stu={"Alex",22,98,100};
aaa(stu);printf("%d",stu.age);}voidaaa(structstudent
sss){sss.age=33;}nameages1s2Alex2298100nameages1s2stusssAlex2298100331.函數(shù)實參和形參都用結(jié)構(gòu)體變量,參數(shù)之間為值傳遞
結(jié)構(gòu)體變量作為函數(shù)參數(shù)例1輸入任意日期,計算該天是本年中第幾天。使用函數(shù)計算天數(shù)。分析:1.日期如何表示?定義日期結(jié)構(gòu)體。structdate{intyear;intmonth;intday;};2.函數(shù)如何設(shè)計?函數(shù)形參(輸入):日期結(jié)構(gòu)體變量函數(shù)返回值(輸出):天數(shù)intfun(structdated)函數(shù)原形:7.5.1結(jié)構(gòu)體變量作為函數(shù)參數(shù)例1輸入任意日期,計算227.5.1
結(jié)構(gòu)體變量作為函數(shù)參數(shù)3.如何計算?如1999.2.1231+12如1999.3.1331+28
+13如2000.3.1331+29+13天數(shù)=前幾個月份天數(shù)之和+當(dāng)月第幾天考慮閏年如何計算前幾個月天數(shù)之和?for(i=1;i<d.month;i++)
{switch(i){case1:case3:case5:case7:case8:case10:
case12:t=31;break;case4:case6:case9:case11:t=30;break;case2:if(d.year%4==0&&d.year%100!=0||d.year%400==0)t=29;elset=28;}
days=days+t;
}7.5.1結(jié)構(gòu)體變量作為函數(shù)參數(shù)3.如何計算?如199237.5.1
結(jié)構(gòu)體變量作為函數(shù)參數(shù)intfun(structdated){intdays=0,i,t;
for(i=1;i<d.month;i++)
{switch(i){case1:…}
days=days+t;
}
days=days+d.day;returndays;}計算前幾個月的天數(shù)之和加上當(dāng)月天數(shù)7.5.1結(jié)構(gòu)體變量作為函數(shù)參數(shù)intfun(struc247.5.1
結(jié)構(gòu)體變量作為函數(shù)參數(shù)voidmain(){structdated;intdays;
scanf("%d%d%d",&d.year,&d.month,&d.day);
days=fun(d);printf("dayofyearis:%d\n",days);}structdate{intyear;intmonth;intday;};輸入日期傳遞整個日期結(jié)構(gòu)體到函數(shù)定義日期結(jié)構(gòu)體7.5.1結(jié)構(gòu)體變量作為函數(shù)參數(shù)voidmain()st257.5.2
結(jié)構(gòu)體指針作為函數(shù)參數(shù)2.指向結(jié)構(gòu)體變量(數(shù)組)的指針做實參,將結(jié)構(gòu)體變量(數(shù)組)的地址傳給形參
structstudent{charname[20];intage;ints1,s2;};voidmain(){structstudent
stu,*p;
p=&stu;
aaa(p);
printf("%d",stu.age);}voidaaa(structstudent*sss){sss->age=33;}Alex2298100stup100010201024102833sss100010007.5.2結(jié)構(gòu)體指針作為函數(shù)參數(shù)2.指向結(jié)構(gòu)體變量(數(shù)組26例2按成績對學(xué)生信息進行從高到底的排序#include<stdio.h>#defineN30structstud{intn;charname[10];ints;};7.5.2
結(jié)構(gòu)體指針作為函數(shù)參數(shù)voidsort(structstud
*p
){inti,j;
structstud
temp;
for(i=0;i<N-1;i++)for(j=i+1;j<N;j++)
if((p+i)->s<(p+j)->s)
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 三穗縣城鎮(zhèn)公益性崗位招聘筆試真題2024
- 2025學(xué)年《道德與法治》主題班會實施計劃
- 2025年貴金屬釬、焊料合作協(xié)議書
- 部編本一年級語文閱讀計劃
- 農(nóng)業(yè)科技公司商業(yè)計劃書范文
- 水利工程施工進度影響因素研究及措施
- 2025年公司級員工安全培訓(xùn)考試試題答案黃金題型
- 2025年項目部安全管理人員安全培訓(xùn)考試試題答案突破訓(xùn)練
- 2025年部門級安全培訓(xùn)考試試題【B卷】
- 計算機視覺技術(shù)在安防中的應(yīng)用范文
- 租賃活動板房協(xié)議書
- 管道燃?xì)獍踩嘤?xùn)課件
- 國網(wǎng)四川省電力公司電網(wǎng)工程設(shè)備材料補充信息參考價2025
- 2025年科技節(jié)活動小學(xué)科普知識競賽題庫及答案(共80題)
- 慢性病管理的護理方法試題及答案
- 2025年高考英語二輪復(fù)習(xí)熱點題型專項訓(xùn)練:完形填空夾敘夾議文(含答案)
- 安保人員安全培訓(xùn)課件
- 2025年中國光伏電池市場發(fā)展現(xiàn)狀調(diào)研及投資趨勢前景分析報告
- 決勝新高考·四川名優(yōu)校聯(lián)盟2025屆高三4月聯(lián)考生物+答案
- 2025年元宇宙+游戲行業(yè)新興熱點、發(fā)展方向、市場空間調(diào)研報告
- 問題等于機會的培訓(xùn)
評論
0/150
提交評論