




已閱讀5頁,還剩8頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
指針知識(shí)點(diǎn)總結(jié)范文 指針及其應(yīng)用關(guān)于指針的考點(diǎn)(1224分)?指針與指針變量的概念、指針與地址運(yùn)算符。 ?變量、數(shù)組、字符串、函數(shù)、結(jié)構(gòu)體的指針,以及指向變量、數(shù)組、字符串、函數(shù)、結(jié)構(gòu)體的指針變量,通過指針引用以上各類型數(shù)據(jù)。 變量、數(shù)組、字符串、函數(shù)、結(jié)構(gòu)體的指針,以及指向變量、數(shù)組、字符串、函數(shù)、結(jié)構(gòu)體的指針變量,通過指針引用以上各類型數(shù)據(jù)。 ?用指針作函數(shù)參數(shù)。 ?返回指針值的指針函數(shù)。 ?指針數(shù)組、指向指針的指針。 ?main函數(shù)的命令行參數(shù)。 知識(shí)點(diǎn)歸納1指針與指針變量的概念。 知識(shí)點(diǎn)歸納1指針與指針變量的概念。 (1)指針就是內(nèi)存中的一個(gè)存儲(chǔ)單元的 (1)指針就是內(nèi)存中的一個(gè)存儲(chǔ)單元的地址,即內(nèi)存單元的編號(hào)。 (2)指針變量是一個(gè)能,即內(nèi)存單元的編號(hào)。 (2)指針變量是一個(gè)能存放地址值的變量。 通過它存放的地址值能間接訪問它所指向的變量。 通過它存放的地址值能間接訪問它所指向的變量。 2指針變量的定義。 類型名*指針變量名類型說明中可取C語言的有效類型,*表示為指針型變量。 如char*c1,*c2;表示c1與c2是指針變量,其基類型是字符型。 類型說明中可取C語言的有效類型,*表示為指針型變量。 如char*c1,*c2;表示c1與c2是指針變量,其基類型是字符型。 注意指針的基類型與其所指向的變量的類型要統(tǒng)一。 3.指針變量的使用方法 (1)使指針變量指向某個(gè)變量,(即將某變量的地址值賦給指針變量)例int x;int*p=&x;或int x,*p;p=&x; (2)用間址運(yùn)算(運(yùn)算符為*)訪問所指變量,例*p=5;/用作左值時(shí)代表所指的變量x=*p+9;/用作右值時(shí)代表所指變量的值注意指針變量在使用之前一定要指向某變量,而不能用常數(shù)直接賦值4指針運(yùn)算的優(yōu)先級(jí)與結(jié)合性(主要涉及*、&、+、-)。 單目運(yùn)算符優(yōu)先級(jí)是相同的,但從右向左結(jié)合。 重點(diǎn)理解 (1)*&a等同于a;&*p等同于&a。 (2)*p+等同于*(p+) (3)*+p等同于*(+p)。 重點(diǎn)理解 (1)*&a等同于a;&*p等同于&a。 (2)*p+等同于*(p+) (3)*+p等同于*(+p)。 (4)(*p)+與*(p+)的區(qū)別。 (*p)+是變量值增值,相當(dāng)于a+;而*(p+)則是用完當(dāng)前值后,指針值增值*(p+)則是用完當(dāng)前值后,指針值增值,即相當(dāng)于a,p+,是指向了新的地址。 5指針與一維數(shù)組(整型數(shù)組) (1)數(shù)組的地址:即數(shù)組中首個(gè)元素 (1)數(shù)組的地址:即數(shù)組中首個(gè)元素a0的地址。 (2)數(shù)組地址的表示方法: (1)用數(shù)組名。 (2)數(shù)組地址的表示方法: (1)用數(shù)組名a a, (2)取首元素的地址,即&a0 (3)數(shù)組指針指向數(shù)組的指針變量的簡稱,即指針變量中存放的是某數(shù)組的首地址。 例,若有int a10,*p; (3)數(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),*(p+9)等同于a0,a1,a2,a9。 (5)總結(jié)一維數(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),*(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è)元素的地址,因此對(duì)數(shù)組的引用可以直接用*a表示a0,用*(a+1)表示a1,用*(a+2)表示a2,用*(a+9)表示a9。 ),(在C中,數(shù)組名就是第一個(gè)元素的地址,因此對(duì)數(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)用(形參為普通變量,調(diào)用后形參不會(huì)影響實(shí)參)#includevoid fun(int a,int b)a+;b+;void main()int x=3,y=4,z;fun(x,y);printf(%d,%dn,x,y);例2傳址調(diào)用(形參為指針,調(diào)用后形參值影響實(shí)參)屬于數(shù)組、指針、函數(shù)的綜合應(yīng)用,注意函數(shù)調(diào)用時(shí)傳值和傳址的區(qū)別 (1)形參為普通變量時(shí)是傳值調(diào)用 (2)形參為指針變量時(shí)是傳址調(diào)用例1傳值調(diào)用(形參為普通變量,調(diào)用后形參不會(huì)影響實(shí)參)#includevoid fun(int a,int b)a+;b+;void main()int x=3,y=4,z;fun(x,y);printf(%d,%dn,x,y);例2傳址調(diào)用(形參為指針,調(diào)用后形參值影響實(shí)參)#includevoid fun(int*a,int*b)(*a)+;(*b)+;void main()int x=3,y=4,z;fun(&x,&y);printf(%d,%dn,x,y);例3傳址調(diào)用(形參為指針,可利用此類形參返回多個(gè)結(jié)果)#includevoid fun(int a,int b,int*c,int*d)*c=a+b;*d=a*b;void main()int x=3,y=4,k,j;fun(x,y,&z,&j);printf(%d,%dn,k,j);例4傳址調(diào)用(形參為數(shù)組名)#includevoid 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);#includevoid fun(int*a,int*b)(*a)+;(*b)+;void main()int x=3,y=4,z;fun(&x,&y);printf(%d,%dn,x,y);例3傳址調(diào)用(形參為指針,可利用此類形參返回多個(gè)結(jié)果)#includevoid fun(int a,int b,int*c,int*d)*c=a+b;*d=a*b;void main()int x=3,y=4,k,j;fun(x,y,&z,&j);printf(%d,%dn,k,j);例4傳址調(diào)用(形參為數(shù)組名)#includevoid 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ù)組由若干個(gè)元素組成,每個(gè)元素中放一個(gè)字符,而字符指針變量中存放的是地址(字符串首個(gè)字符的地址),決不是將字符串放到字符用指針方式與用字符數(shù)組方式操作字符串的區(qū)別 (1)存儲(chǔ)方式不同。 字符數(shù)組由若干個(gè)元素組成,每個(gè)元素中放一個(gè)字符,而字符指針變量中存放的是地址(字符串首個(gè)字符的地址),決不是將字符串放到字符指針變量中。 (2)賦值方式不同。 對(duì)字符數(shù)組只能對(duì)各個(gè)元素賦值,不能用以下辦法對(duì)字符數(shù)組賦值。 指針變量中。 (2)賦值方式不同。 對(duì)字符數(shù)組只能對(duì)各個(gè)元素賦值,不能用以下辦法對(duì)字符數(shù)組賦值。 char str20;str=Good luck!;而對(duì)字符指針變量,可以采用下面方法賦值而對(duì)字符指針變量,可以采用下面方法賦值char*str;str=Good luck!;賦給str的不是字符,而是字符串第一個(gè)元素的地址。 (3)輸入方式不同。 對(duì)字符數(shù)組可用如下方式賦值char str20;scanf(%s,str);/ok但對(duì)字符指針變量則不建議用此方式,因?yàn)闀?huì)發(fā)生指針的異常指向,正確做法為char*str,a20;賦給str的不是字符,而是字符串第一個(gè)元素的地址。 (3)輸入方式不同。 對(duì)字符數(shù)組可用如下方式賦值char str20;scanf(%s,str);/ok但對(duì)字符指針變量則不建議用此方式,因?yàn)闀?huì)發(fā)生指針的異常指向,正確做法為char*str,a20;str=a;/使指針有明確的指向scanf(%s,str); (4)字符指針變量的值是可以改變的,而字符數(shù)組名的值是不可以改變的。 例1#includevoid main()char scanf(%s,str); (4)字符指針變量的值是可以改變的,而字符數(shù)組名的值是不可以改變的。 例1#includevoid main()char*str=Good luck!;puts(str);=Good luck!;puts(str);str+=5;/ok puts(str);例2#includevoid main()char puts(str);例2#includevoid main()char str20=Good luck!;puts(str);=Good luck!;puts(str);str+=5;/error!puts(str);puts(str);8.指針與二維數(shù)組(整型、字符型) (1)二維數(shù)組的按行存儲(chǔ)若有int a23=1,2,3,4,5,6,*p=a;則*(p+4)=a11=5 (2)二維數(shù)組元素的地址表示及訪問方式設(shè)int a23,*p;p=&a;可見a是23的數(shù)組,含有6個(gè)元素。 可認(rèn)為a有兩個(gè)元素a0和a1;而a0與a1又分別是具有三個(gè)元素的一維數(shù)組。 (1)二維數(shù)組的按行存儲(chǔ)若有int a23=1,2,3,4,5,6,*p=a;則*(p+4)=a11=5 (2)二維數(shù)組元素的地址表示及訪問方式設(shè)int a23,*p;p=&a;可見a是23的數(shù)組,含有6個(gè)元素。 可認(rèn)為a有兩個(gè)元素a0和a1;而a0與a1又分別是具有三個(gè)元素的一維數(shù)組。 a aa0所含元素為a00,a01,a02;a1所含元素為a10,a11,a12(可以記憶為二維數(shù)組a含有二個(gè)行元素,每個(gè)行元素又含有3個(gè)列元素)因此對(duì)于二維數(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)就是aij,即aij=*(*(a+i)+j)。 (可以記憶為二維數(shù)組a含有二個(gè)行元素,每個(gè)行元素又含有3個(gè)列元素)因此對(duì)于二維數(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)就是aij,即aij=*(*(a+i)+j)。 8函數(shù)與指針 (1)指針作為函數(shù)參數(shù)(知識(shí)點(diǎn)6) (2)函數(shù)的返回值為指針類型 (1)指針作為函數(shù)參數(shù)(知識(shí)點(diǎn)6) (2)函數(shù)的返回值為指針類型定義方式為類型*函數(shù)名();例#includeint z;例#includeint z;int*fun(int x,int y)z=x+y;return(int x,int y)z=x+y;return&z;void main()int a=3,b=4;int*c;c=fun(a,b);printf(%dn,*c);void main()int a=3,b=4;int*c;c=fun(a,b);printf(%dn,*c); (3)指向函數(shù)的指針變量 (3)指向函數(shù)的指針變量定義方式為類型(*變量名)();這里變量名前一個(gè)*號(hào),說明該變量是指針變量,而后面有括號(hào)說明這個(gè)指針變量是指向函數(shù)的。 如int(*p1)();說明p1是指針變量,這個(gè)指針變量是指向函數(shù)的。 這里變量名前一個(gè)*號(hào),說明該變量是指針變量,而后面有括號(hào)說明這個(gè)指針變量是指向函數(shù)的。 如int(*p1)();說明p1是指針變量,這個(gè)指針變量是指向函數(shù)的。 9指針數(shù)組與指向一維數(shù)組的指針變量 (1)指針數(shù)組一個(gè)數(shù)組,它的元素都為指針類型。 定義方式為類型說明*數(shù)組名整型常量表達(dá)式如char*s4;則定義了一個(gè)指針數(shù)組,即s0,s1,s2,s3均用來存放地址值,主要用于處理多個(gè)字符串。 如char*s4;則定義了一個(gè)指針數(shù)組,即s0,s1,s2,s3均用來存放地址值,主要用于處理多個(gè)字符串。 (2)指向一維數(shù)組的指針一個(gè)指針,指向一個(gè)一維數(shù)組定義形式是 (2)指向一維數(shù)組的指針一個(gè)指針,指向一個(gè)一維數(shù)組定義形式是類型說明(*變量)整型常量表達(dá)式如int(*p)4;定義p為指針變量,它指向的是一個(gè)具有四個(gè)元素的一維數(shù)組。 10指向指針的指針指向指針的指針也就是“二級(jí)指針”。 指向指針的指針也就是“二級(jí)指針”。 定義方式如下類型說明*指針變量名即定義一個(gè)二級(jí)指針變量,類型說明是它指向的指針變量所指向的變量的數(shù)據(jù)類型。 它所指向的指針變量稱為一級(jí)指針變量。 即定義一個(gè)二級(jí)指針變量,類型說明是它指向的指針變量所指向的變量的數(shù)據(jù)類型。 它所指向的指針變量稱為一級(jí)指針變量。 賦值形式為二級(jí)指針變量=&一級(jí)指針變量;這類似于張三有李四的地址,而王五有張三
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年云南省農(nóng)業(yè)農(nóng)村廳下屬事業(yè)單位真題
- 城市交通需求預(yù)測重點(diǎn)基礎(chǔ)知識(shí)點(diǎn)
- 江蘇省東臺(tái)市第四教育聯(lián)盟2025屆八下數(shù)學(xué)期末預(yù)測試題含解析
- 2024年山西能源學(xué)院輔導(dǎo)員考試真題
- 2024年重慶石柱縣融媒體中心招聘筆試真題
- 班級(jí)故事分享平臺(tái)的建立計(jì)劃
- 2024年湖北省農(nóng)業(yè)農(nóng)村廳下屬事業(yè)單位真題
- 2024年南平市太平鎮(zhèn)衛(wèi)生院招聘筆試真題
- 2024年牡丹江穆棱市鄉(xiāng)村醫(yī)生招聘筆試真題
- 2024年福建福州榕發(fā)物業(yè)發(fā)展有限公司招聘真題
- 公共管理學(xué)黎民講義
- 31小動(dòng)物本領(lǐng)大-課件
- 初三數(shù)學(xué)總復(fù)習(xí)教學(xué)策略課件
- 一年級(jí)語文下冊(cè)識(shí)字表(可打印最全版本)
- 結(jié)晶葡萄糖生產(chǎn)工藝簡介課件
- 危大工程驗(yàn)收記錄表(模板工程)
- 中班科學(xué)活動(dòng):風(fēng)車轉(zhuǎn)轉(zhuǎn)轉(zhuǎn)課件-2
- 醫(yī)院職能部門監(jiān)管及持續(xù)改進(jìn)記錄表(DOC57)
- 質(zhì)量整改通知單(樣板)
- 2022年教學(xué)教材《石油裂解與乙烯》精品優(yōu)秀教案
- 八年級(jí)地理上冊(cè)《第一章中國的疆域與人口》教案湘教
評(píng)論
0/150
提交評(píng)論