指針知識(shí)點(diǎn)總結(jié)_第1頁
指針知識(shí)點(diǎn)總結(jié)_第2頁
指針知識(shí)點(diǎn)總結(jié)_第3頁
指針知識(shí)點(diǎn)總結(jié)_第4頁
指針知識(shí)點(diǎn)總結(jié)_第5頁
已閱讀5頁,還剩2頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、-. z.指針及其應(yīng)用關(guān)于指針的考點(diǎn)1224分:指針與指針變量的概念、指針與地址運(yùn)算符。變量、數(shù)組、字符串、函數(shù)、構(gòu)造體的指針,以及指向變量、數(shù)組、字符串、函數(shù)、構(gòu)造體的指針變量,通過指針引用以上各類型數(shù)據(jù)。用指針作函數(shù)參數(shù)。返回指針值的指針函數(shù)。指針數(shù)組、指向指針的指針。main函數(shù)的命令行參數(shù)。知識(shí)點(diǎn)歸納:1指針與指針變量的概念。1指針:就是內(nèi)存中的一個(gè)存儲(chǔ)單元的地址,即內(nèi)存單元的編號。2指針變量:是一個(gè)能存放地址值的變量。通過它存放的地址值能間接訪問它所指向的變量。2指針變量的定義。類型名 *指針變量名類型說明中可取C語言的有效類型,* 表示為指針型變量。如:char *c1,*c2;表

2、示c1與c2是指針變量,其基類型是字符型。注意:指針的基類型與其所指向的變量的類型要統(tǒng)一。3.指針變量的使用方法1使指針變量指向*個(gè)變量,即將*變量的地址值賦給指針變量例:int *; int *p=&*; 或 int *,*p; p=&*;2用間址運(yùn)算運(yùn)算符為*訪問所指變量,例:*p=5;/用作左值時(shí)代表所指的變量*=*p+9;/用作右值時(shí)代表所指變量的值注意:指針變量在使用之前一定要指向*變量,而不能用常數(shù)直接賦值4指針運(yùn)算的優(yōu)先級與結(jié)合性主要涉及*、&、+、- -。單目運(yùn)算符優(yōu)先級是一樣的,但從右向左結(jié)合。重點(diǎn)理解:1*&a等同于a;&*p等同于&a。2*p+等同于*p+3*+p等同于*

3、(+p)4*p+與*p+的區(qū)別。*p+是變量值增值,相當(dāng)于a+;而*p+則是用完當(dāng)前值后,指針值增值,即相當(dāng)于a, p+,是指向了新的地址。5指針與一維數(shù)組整型數(shù)組1數(shù)組的地址:即數(shù)組中首個(gè)元素a0的地址。2數(shù)組地址的表示方法: (1)用數(shù)組名a,(2)取首元素的地址,即&a03數(shù)組指針:指向數(shù)組的指針變量的簡稱,即指針變量中存放的是*數(shù)組的首地址。例,假設(shè)有 int a10,*p;p=&a;則可稱p為a數(shù)組的指針,或稱p指向數(shù)組a。4指針與數(shù)組的關(guān)系:通過移動(dòng)指針使其指向不同的數(shù)組元素p,p+1,(p+2),(p+9) 等同于 &a0,&a1,&a2,&a9。*p,*p+1,*(p+2),*

4、(p+9) 等同于a0,a1,a2,a9。5總結(jié):一維數(shù)組元素的合法引用方式方式一,數(shù)組名下標(biāo),例如 a0,a1,方式二,指針名下標(biāo),例如 p0,p1,方式三,*指針名+下標(biāo),例如 *p,*(p+0),*(p+1),方式四,*數(shù)組名+下標(biāo),例如 *a,*(a+0),*(a+1),在C中,數(shù)組名就是第一個(gè)元素的地址,因此對數(shù)組的引用可以直接用*a表示a0,用*(a+1)表示a1,用*(a+2)表示a2,用*(a+9)表示a9。6.數(shù)組名或數(shù)組指針作函數(shù)參數(shù)屬于數(shù)組、指針、函數(shù)的綜合應(yīng)用,注意函數(shù)調(diào)用時(shí)傳值和傳址的區(qū)別:1形參為普通變量時(shí)是傳值調(diào)用2形參為指針變量時(shí)是傳址調(diào)用例1:傳值調(diào)用形參為普

5、通變量,調(diào)用后形參不會(huì)影響實(shí)參#include void fun(int a,int b)a+;b+;void main() int *=3,y=4,z;fun(*,y); printf(%d,%dn,*,y);例2:傳址調(diào)用形參為指針,調(diào)用后形參值影響實(shí)參#include void fun(int *a,int *b) (*a)+; (*b)+; void main() int *=3,y=4,z; fun(&*,&y); printf(%d,%dn,*,y);例3 傳址調(diào)用形參為指針,可利用此類形參返回多個(gè)結(jié)果#include void fun(int a,int b, int *c,in

6、t* d) *c=a+b; *d=a*b;void main() int *=3,y=4,k,j; fun(*,y,&z,&j); printf(%d,%dn,k,j);例4 傳址調(diào)用形參為數(shù)組名#include void fun(int b,int i) bi=0; void main() int a10=0,1,2,3,4,5,6,7,8,9, i;fun(a,5); for (i=0;i10;i+) printf(%d,ai);7指針與一維數(shù)組字符數(shù)組用指針方式與用字符數(shù)組方式操作字符串的區(qū)別:1存儲(chǔ)方式不同。字符數(shù)組由假設(shè)干個(gè)元素組成,每個(gè)元素中放一個(gè)字符,而字符指針變量中存放的是地址

7、字符串首個(gè)字符的地址,決不是將字符串放到字符指針變量中。2賦值方式不同。對字符數(shù)組只能對各個(gè)元素賦值,不能用以下方法對字符數(shù)組賦值。 char str20;str=Good luck!; 而對字符指針變量,可以采用下面方法賦值: char *str;str=Good luck!;賦給str的不是字符,而是字符串第一個(gè)元素的地址。3輸入方式不同。對字符數(shù)組可用如下方式賦值:char str20;scanf(%s,str); /ok但對字符指針變量則不建議用此方式,因?yàn)闀?huì)發(fā)生指針的異常指向,正確做法為:char *str,a20;str=a; /使指針有明確的指向scanf(%s,str);4字符

8、指針變量的值是可以改變的,而字符數(shù)組名的值是不可以改變的。例1:#include void main() char *str=Good luck!; puts(str);str+=5;/ok puts(str);例2:#include void main() char str20=Good luck!; puts(str);str+=5;/error! puts(str);8. 指針與二維數(shù)組整型、字符型1二維數(shù)組的按行存儲(chǔ)假設(shè)有 int a23=1,2,3,4,5,6,*p=a; 則*(p+4)=a11=52二維數(shù)組元素的地址表示及訪問方式設(shè)int a23,*p;p=&a;可見a是23的數(shù)組

9、,含有6 個(gè)元素??烧J(rèn)為a有兩個(gè)元素:a0和a1;而a0與a1又分別是具有三個(gè)元素的一維數(shù)組。aa0所含元素為: a00,a01,a02;a1所含元素為: a10,a11,a12(可以記憶為:二維數(shù)組a含有二個(gè)行元素,每個(gè)行元素又含有3個(gè)列元素)因此對于二維數(shù)組a,a0即&a00,也就是第0行的首地址。a1就是&a10,也就是第一行的首地址。由地址運(yùn)算規(guī)則,a0+0就是&a00,a0+1就是&a01,a0+2就是&a02。所以一般地:ai+j=&aij.在二維數(shù)組中,可以用指針表示數(shù)組元素的地址,如:ai+j=&aij也可寫為*(a+i)+j=&aij,從而可知,*(*(a+i)+j)就是ai

10、j,即aij= *(*(a+i)+j)。8函數(shù)與指針1指針作為函數(shù)參數(shù)知識(shí)點(diǎn)62函數(shù)的返回值為指針類型定義方式為:類型 *函數(shù)名 ;例:#include int z;int*fun(int *,int y) z=*+y; return &z;void main() int a=3,b=4; int *c; c=fun(a,b); printf(%dn,*c);3指向函數(shù)的指針變量定義方式為:類型 *變量名;這里變量名前一個(gè)*號,說明該變量是指針變量,而后面有括號說明這個(gè)指針變量是指向函數(shù)的。如:int *p1( ); 說明p1是指針變量,這個(gè)指針變量是指向函數(shù)的。9指針數(shù)組與指向一維數(shù)組的指針

11、變量1指針數(shù)組:一個(gè)數(shù)組,它的元素都為指針類型。定義方式為:類型說明 *數(shù)組名整型常量表達(dá)式如:char *s4;則定義了一個(gè)指針數(shù)組,即s0,s1,s2,s3均用來存放地址值,主要用于處理多個(gè)字符串。2指向一維數(shù)組的指針:一個(gè)指針,指向一個(gè)一維數(shù)組定義形式是:類型說明 *變量整型常量表達(dá)式如:int (*p)4;定義p為指針變量,它指向的是一個(gè)具有四個(gè)元素的一維數(shù)組。10指向指針的指針指向指針的指針也就是二級指針。定義方式如下:類型說明 *指針變量名即定義一個(gè)二級指針變量,類型說明是它指向的指針變量所指向的變量的數(shù)據(jù)類型。它所指向的指針變量稱為一級指針變量。賦值形式為:二級指針變量=&一級指

12、針變量;這類似于*三有李四的地址,而王五有*三的地址,這樣王五通過*三找到李四。這樣*三是一級指針,而王五是二級指針。例如:#include void mainchar *name=Follow me,BASIC,Great Wall,F(xiàn)ORTRAN,puter design; char *;int ; fori=0;i1) +argv;printf(%sn,argv; argc; 在DOS命令狀態(tài)下輸入的命令行為:file1 China Beijing則執(zhí)行以上命令行將會(huì)輸出以下信息:ChinaBeijing11.有關(guān)指針的數(shù)據(jù)類型的小結(jié)定義含義int ;定義整型變量int *p;為指向整型數(shù)據(jù)的指針變

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(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

提交評論