




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、授課教師:楊瑾 ,c語言第五講,int a=6,*p,*q;,指針復(fù)習(xí),p=,6,a,p,q,2001,4001,6001,問:,p的值( ) *p的值() *(,指針復(fù)習(xí),6,NULL,a,p,2001,4001,*p=8 不合法 不能通過空指針訪問存儲(chǔ)單元,p= *p=8 合法 給空指針重新賦值,指向變量a,在通過*p間接訪問a. *p等價(jià)于a,1,引入:int a=6,b=7 ,*p=,指針變量加1:p+1 含義是指向緊接著的下 一個(gè)存儲(chǔ)單元b。 p的值為變量a的地址,即2001. p+1的值為變量b的地址,即2003,一維數(shù)組和指針,P+1,引用方式: a, *p, *(,一維數(shù)組和指
2、針,引用方法,a,a0,a3,a4,a2,a1,a+1,a+i,main( ) int a5,i; for(i=0;i5;i+) scanf(%d,a+i); printf(n); for(i=0; i5;i+) printf(%d,*(a+i); ,課本p169 例2,一維數(shù)組和指針,a,a+i,指針變量p加下標(biāo)代表該指針指向的具體的存儲(chǔ)單元如:p0等價(jià)于數(shù)組元素a0, p1等價(jià)于a1,int a5; int *p=a 或 int *p= for(i=0,p=a;i5;i+) scanf(%d,p+i); printf(n); for(p=a; pa+5;p+) printf(%d,*p);
3、 ,p+1,p+i,p,a0,a3,a4,a2,a1,注意:p:指針變量,可以重新賦值,如p= int *p=a 或 int *p= int *p= ,p,q,課本p170 例4,一維數(shù)組和指針,main( ) int i ,s=0,t=1,2,3,4,5,6,7,8,9; for(i=0;i9;i+=2) s+=*(t+i); printf(“%dn“,s); ,習(xí)題p50 13,一維數(shù)組和指針,main( ) int a10=1,2,3,4,5,6,7,8,9,10,*p=a; printf(“%dn“,*(p+2); ,p,P+2,一維數(shù)組和指針,main( ) int a10=2,4,
4、6,8,10,y=0,x,*p; p= ,p,習(xí)題p50 15,p1等價(jià)于*(p+1) px等價(jià)于*(p+x),課本p169 例1,一維數(shù)組和指針,main( ) int a5=1,2,3,4,5,6,7,8,9,10; int *p= ,p,q,數(shù)組a可看成是具有兩個(gè)數(shù)組元素a0,a1的一維數(shù)組,而a0,a1有分別是具有三個(gè)數(shù)組元素的一維數(shù)組。,int a24;,二維數(shù)組和指針,a0,a1,a,a0,a0+1,a1+1,引用方法: a11,*(,二維數(shù)組和指針,a0,a1,a,p+1,int *p=,p,p等價(jià)于a0, p+1等價(jià)于a0+1, p+2等價(jià)于a0+2, p+3等價(jià)于a1, p+
5、4等價(jià)于a0+1, p+5等價(jià)于a1+2, p0等價(jià)于a00, . , p2等價(jià)于a02,引用方法: a11,*(,二維數(shù)組和指針,a0,a1,a,引用方法: a11,*( int a24;,二維數(shù)組和指針,p,引用方法:*(p1+1), *(*(p+1)+1), p11(指針變量加下標(biāo)代表它所指向的具體存儲(chǔ)單元),p+1,p0等價(jià)于 int a32; p=a;,二維數(shù)組和指針,p,引用方法:*(p1+1), *(*(p+1)+1), p11,p+1,p+2,注意:區(qū)分 int *p2; int (*p)2,main( ) int a33,*p,i; p= ,習(xí)題p51 23,二維數(shù)組和指針,
6、p,注意指針變量名加下標(biāo)的含義。,main( ) int a33,*p,i; p= ,習(xí)題p51 24,二維數(shù)組和指針,p,注意指針變量名加下標(biāo)的含義。,main( ) int a32=0,(*ptr)2,i,j; for(i=0;i2;i+) ptr=a+i; scanf(“%d”,*ptr); ptr+; for(i=0;i3;i+) for(j=0;j2;j+) printf(“%2d”,aij); printf(“n”); ,習(xí)題p51 25,二維數(shù)組和指針,ptr,main( ) int a3=1,2,3,4,5,0,(*pa)3,i; pa=a; for(i=0;i3;i+) if
7、(i2) pa1i=pa1i-1; else pa1i=1; printf(“%d”,a01+a11+ a12); ,習(xí)題p51 31,二維數(shù)組和指針,ptr,void fun(int x,int y) int t=0; if(xy) t=x;x=y;y=t; main( ) int a=1,2,3,4,5,s=0; fun(a3,a2); printf(“%d,%d”,a2,a3); ,1.一維數(shù)組元素作實(shí)參,數(shù)組和函數(shù),int fun(int *x,int n) int i,sum=0; for(i=0;in;i+) sum=sum+xi; return sum; main( ) int
8、a=1,2,3,4,5,s=0; fun(a,5); printf(“%dn”,s); ,2.一維數(shù)組名作實(shí)參,數(shù)組和函數(shù),x,還可寫成 int fun(int x ,int n) 或(int x5,int n),void sum(int p ) p0=p-1+p1; main( ) int a10=1,2,3,4,5,6,7,8,9,10; sum( ,3.一維數(shù)組元素地址作實(shí)參,數(shù)組和函數(shù),p,void fun(int a3,int b3) int i,j; for(i=0;i3;i+) for(j=0;j3;j+) bij=aji; main( ) int a33=1,2,3,4,5,6
9、,7,8,9;int b33; fun(a,b); for(i=0;i3;i+) for(j=0;j3;j+) printf(“%3dn”,bij); ,4.二維數(shù)組名作實(shí)參,數(shù)組和函數(shù),還可寫成 (int a33,int b33) 或(int (*a)3,int (*b)3),fun(int *a) main( ) int a33,*p3; for(i=0;i3;i+) pi=ai; fun(p); ,5.指針數(shù)組作實(shí)參,數(shù)組和函數(shù),還可寫成 (int *a ) (int *a3),void change(int k) k0=k5; main( ) int x10=1,2,3,4,5,6,7
10、,8,9,10,n=0; while(n=4) change( ,習(xí)題 p95 2,數(shù)組和函數(shù),int fun(int x,int n) static int sum=0; for(i=0;in;i+) sum+=xi; return sum; main( ) int a=1,2,3,4,5,b=6,7,8,9,s=0; s=fun(a,5)+fun(b,4); printf(“%dn”,s); ,習(xí)題 p95 3,數(shù)組和函數(shù),int fun(int x,int n) static int sum=0; for(i=0;in;i+) sum+=xi; return sum; main( ) i
11、nt a=1,2,3,4,5,b=6,7,8,9,s=0; s=fun(a,5)+fun(b,4); printf(“%dn”,s); ,習(xí)題 p95 3,數(shù)組和函數(shù),用戶定義類型,typedef 類型名 標(biāo)識(shí)符; 1. typedef int ZHENG_SHU; ZHENG_SHU a,b; /等價(jià)于 int a,b; 2. typedef int *INTP; INTP p,q; /等價(jià)于 int *p,*q; 注意:是typedef int *INTP; 不是typedef *int INTP;,用戶定義標(biāo)識(shí)符,一般用大寫字母表示,已定義過的數(shù)據(jù)類型 (如:int char ),關(guān)鍵字
12、 作用:用用戶標(biāo)識(shí)符來代替一個(gè)已存在的類型名。,宏定義,不帶參數(shù)的宏定義 #define 宏名 替換文本 或 #define 宏名 如:#define PI 3.1415926 #define ADDPI (PI+1) #define ADDPI2 PI+1,/替換文本中又包含宏名PI,x=2*ADDPI x=2*ADDPI2 printf(“PI is:”); 輸出結(jié)果:PI is:,x=2*(PI+1)=2*(3.1516926+1),x=2*PI+1=2*3.1516926+1,用替換文本簡單替換宏名,不做計(jì)算。 (宏展開),雙引號(hào)中不替換,帶參數(shù)的宏定義 #define 宏名(形參表)
13、 表達(dá)式 如:#define ADD(x,y) (x+y) #define ADD2(x,y) x+y,宏定義, x=2*ADD(2,3) x=2*ADD2(2,3) 注意:帶參數(shù)的宏定義與函數(shù)的區(qū)別。 1. 形參不指定類型。 2. 宏替換不占運(yùn)行時(shí)間。,x=2*(2+3)=10,x=2*2+3=7,宏展開時(shí),用表達(dá)式替換宏名,實(shí)參代替形參(簡單替換),文件包含,標(biāo)識(shí)符作用域,存儲(chǔ)分類,變 量,局部 變量,全局 變量,自動(dòng)變量(auto),寄存器變量(register),靜態(tài)變量(static),說明 方式,extern,static,main() int i=1,i_sum; float f
14、,f_sum; int i; i=10; printf(“(1)i=%dn”,i); printf(“(2)i=%dn”,i); ,main() register int i=1; int s=0; for(i=0;i100;i+) s+=I; printf(“s=%dn”,s); ,fun(int a) int b=0;static int c=3; b+; c+; return (a+b+c); main() int i,a=5; for(i=0;i3;i+) printf(“ %d %dn”,i,fun(a); printf(“n”); ,標(biāo)識(shí)符作用域,存儲(chǔ)分類,變 量,局部 變量,全局
15、 變量,自動(dòng)變量(auto),寄存器變量(register),靜態(tài)變量(static),說明 方式,extern,static,int sum; int fun1( ) sum+=20; int a; int fun2( ) a+20; sum+=a; main() sum=0; fun1(); a=8; fun2(); printf(“sum=%d a=%d”,sum,a); ,void fun2(char a,char b) printf(%c%c,a,b); char a=A,b=B; void fun1( ) a=C,b=D; main( ) fun1(); printf(%c%c,a
16、,b); fun2(E,F); ,習(xí)題p78 例14,標(biāo)識(shí)符作用域,存儲(chǔ)分類,全局變量 a,b作用域,int f( ) static int i=0; int s=1; s+=i;i+; return s; main( ) int i,a=0; for(i=0;i5;i+) a+=f(); printf(%d,a); ,習(xí)題p78 例15,標(biāo)識(shí)符作用域,存儲(chǔ)分類,靜態(tài)局局變 量i作用域,動(dòng)態(tài)存儲(chǔ)分配,1. malloc函數(shù) int *p; p=(int *)malloc(4); 或 p=(int *)malloc(sizeof(int); 注意: 分配的存儲(chǔ)單元無確定初值; 單個(gè)數(shù)據(jù)類型 手動(dòng)釋放 free(p);,動(dòng)態(tài)存儲(chǔ)分配
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 抵押合同借款合同
- 甘肅減震支架施工方案
- 三農(nóng)村電商推廣營銷策略手冊(cè)
- 國際公路貨運(yùn)合同
- 人力資源開發(fā)合同
- 生態(tài)木墻板施工方案
- 種植屋面施工方案報(bào)價(jià)
- 銅包鋼施工方案
- 鐵路橋墩基坑回填施工方案
- 贈(zèng)針高教學(xué)文學(xué)
- 2025湖南省低空經(jīng)濟(jì)發(fā)展集團(tuán)有限公司招聘11人筆試參考題庫附帶答案詳解
- 七年級(jí)下冊(cè)道德與法治(2025年春)教材變化詳細(xì)解讀
- GB/T 11856.1-2025烈性酒質(zhì)量要求第1部分:威士忌
- 認(rèn)識(shí)常用電子元件圖解課件
- 2025年鐵嶺衛(wèi)生職業(yè)學(xué)院單招職業(yè)技能測(cè)試題庫1套
- 2025山東能源集團(tuán)中級(jí)人才庫選拔高頻重點(diǎn)提升(共500題)附帶答案詳解
- 20S515 鋼筋混凝土及磚砌排水檢查井
- 關(guān)于建設(shè)吉林長白山人參產(chǎn)業(yè)園的報(bào)告
- 6人小品《沒有學(xué)習(xí)的人不傷心》臺(tái)詞完整版
- 腰椎ODI評(píng)分完整版
- 屋頂分布式光伏發(fā)電項(xiàng)目設(shè)計(jì)方案(完整版)
評(píng)論
0/150
提交評(píng)論