版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、一、數(shù)組的指針1.數(shù)組與地址2.數(shù)組元素的訪問二、字符串指針1.字符串指針的定義2.字符指針與字符數(shù)組的區(qū)別三、指針作為函數(shù)參數(shù)1.數(shù)組名作為函數(shù)參數(shù)2.字符指針作為函數(shù)參數(shù),第16講數(shù)組的指針和字符串的指針,C語言規(guī)定:數(shù)組名代表數(shù)組(元素)的首地址,即第一個(gè)元素的地址。若有:inta10,*p=a;則:a與a0是等價(jià)的指針變量p為數(shù)組的指針數(shù)組的指針:數(shù)組的起始地址,即數(shù)組元素的首地址。數(shù)組元素的指針:數(shù)組元素的地址。,一、數(shù)組的指針,1.數(shù)組與地址,對數(shù)組的首地址加上偏移量x就可以得到其它元素的地址。例:a1表示數(shù)組元素a1的地址等價(jià)于a+1、p+1ax表示數(shù)組元素ax的地址等價(jià)于a+x
2、、p+x,2.數(shù)組元素的訪問,下標(biāo)法:用ai的形式存取數(shù)組元素。地址法:用*(a+i)的形式存取數(shù)組元素。指針法:用指針變量p指向數(shù)組的首地址,然后通過移動指針存取數(shù)組元素。如p=a,p+i。,例a用下標(biāo)法存取數(shù)組元素,main()inta10,i;for(i=0;i10;i+)scanf(%d,例b用地址法存取數(shù)組元素,main()inta10,i;for(i=0;i10;i+)scanf(%d,a+i);for(i=0;i10;i+)printf(%d,*(a+i);printf(n);,數(shù)組元素的訪問舉例,例c用指針法存取數(shù)組元素。(即通過指針指向數(shù)組的首地址,然后通過移動指針存取數(shù)組元
3、素。),main()inta10,*p,i;for(i=0,p=a;i10;i+)scanf(%d,p+i);for(i=0,p=a;i10;i+)printf(%d,*(p+i);printf(n);,main()inta10,*p;for(p=a;pa+10;p+)scanf(%d,p);for(p=a;pa+10;p+)printf(%d,*p);printf(n);,例c說明,p=p=a+2;(*p)+;printf(%dn,*p);程序段輸出為:5,例,main()inta5=0,2,4,6,8,*p,x;p=a;(*p)+;p=a+1;+(*p);p=a+2;(*p)-;p=a+3
4、;-(*p);for(x=0;x=4;x+)printf(%d,ax);printf(n);,程序運(yùn)行結(jié)果:13358,指向數(shù)組元素的指針也可以表示成數(shù)組的形式,即允許指針變量帶下標(biāo),如*(p+i)可以表示成pi。但需注意,如果p不指向a0,則pi和ai是不一樣的。如p=a+3;由于p指向a3,所以p3就相當(dāng)于a6而不是a3。這種方式容易出錯(cuò),一般不提倡使用。,字符串的處理是用字符型數(shù)組來實(shí)現(xiàn)的。用char型數(shù)組處理的字符串都可以用char型指針來處理。通常把char型指針稱為字符串指針或字符指針。,二、字符串指針,在程序中定義一個(gè)字符指針變量,并將字符串的首地址賦給它,然后通過字符指針變量來
5、訪問字符串。例如:charstr=Cprogramming;char*p;p=str;或:char*str=Cprogramming;,1.字符串指針的定義,例:,/*用字符數(shù)組實(shí)現(xiàn)字符串操作*/main()charstr=WelcometostudyC!;inti;printf(%sn,str);for(i=0;i=7;i+)printf(%c,stri);printf(n);,程序運(yùn)行結(jié)果為:WelcometostudyC!Welcome,例,/*用字符指針實(shí)現(xiàn)字符串操作*/main()char*str=WelcometostudyC!;inti;printf(%sn,str);for(i
6、=0;i=7;i+)printf(%c,*(str+i);printf(n);,字符指針與字符數(shù)組的區(qū)別,字符數(shù)組是由若干個(gè)元素組成,每個(gè)元素存放一個(gè)字符;而字符指針變量存放的是字符串的首地址。賦值方式不同。字符數(shù)組只能對各個(gè)元素分別賦值,而字符指針只需賦給字符串的首地址就可以了。字符指針占用的內(nèi)存要少于字符數(shù)組。指針變量的值是可以改變,而字符數(shù)組的數(shù)組名雖然代表地址,但它的值是不會變化。,區(qū)別舉例:,如:char*str;str=WelcometostudyC!;以下對字符數(shù)組的賦值是錯(cuò)誤的:charstr80;str=WelcometostudyC!;,例將字符串s1復(fù)制到字符串s2。,m
7、ain()chars1=“copystring”,s230;char*p1=s1,*p2=s2;inti;for(;*p1!=0;p1+,p2+)*p2=*p1;*p2=0;printf(“strings2=”);for(i=0;s2i!=0;i+)printf(“%c”,s2i);printf(“n”);,程序運(yùn)行結(jié)果為:strings2=Copystring,1.數(shù)組名作為函數(shù)參數(shù),特點(diǎn):數(shù)組名表示數(shù)組元素的首地址。在函數(shù)調(diào)用時(shí),傳遞的是數(shù)組元素的首地址。實(shí)參與形參的傳遞是“值傳遞”。實(shí)參數(shù)組與形參數(shù)組共用一段存儲單元??梢杂弥赶驍?shù)組的指針變量作函數(shù)的參數(shù)。,三、指針作為函數(shù)參數(shù),以下列出
8、實(shí)參和形參使用數(shù)組名或指針變量的四種情況:實(shí)參:數(shù)組名數(shù)組名指針變量指針變量形參:數(shù)組名指針變量數(shù)組名指針變量,例:已知一個(gè)一維數(shù)組a11中有10個(gè)數(shù),求出其中前n個(gè)數(shù)的和,并放入a10中。其中n由鍵盤輸入。,#includesum(int*q,intn)inti,s=0;int*t;t=q;/*t與q都指向數(shù)組a的第一個(gè)元素*/for(i=0;in;i+,q+)s+=*q;*(t+10)=s;/*t+10指向數(shù)組元素a10*/,main()intnum,a11=1,2,3,4,5,6,7,8,9,10;int*p=a;scanf(%d,將一個(gè)字符串從一個(gè)函數(shù)傳遞到另一個(gè)函數(shù),可以使用地址傳遞
9、的方法,即用字符數(shù)組名作為參數(shù)或用指向字符串的指針變量作為參數(shù)。在被調(diào)用函數(shù)中可以改變字符串的內(nèi)容,而在主調(diào)函數(shù)中可以得到被改變了的字符串。由于字符串是按照字符數(shù)組形式存儲的,所以對字符串中字符的引用也可以用下標(biāo)法或指針法。,2.字符指針作為函數(shù)參數(shù),例設(shè)有兩個(gè)字符串Hello和World!,試將它們連接在一起成為一個(gè)字符串。,main()charstr115=Hello,str2=World!;inti;strcat(str1,str2);printf(Stringstr1=%sn,str1);strcat(char*s,char*t)while(*s!=0)s+;/*使s指向字符串str1
10、的末尾*/while(*t!=0)*s=*t;t+;s+;*s=0;/*在s后加上字符串結(jié)束標(biāo)志*/,程序運(yùn)行結(jié)果為:Stringstr1=HelloWorld!,例輸入一串小寫字符將其轉(zhuǎn)換為大寫字符,main()inti;chara100;printf(“Inputn”);scanf(“%s”,a);utol(a);printf(%sn,a);,utol(char*x)inti;for(i=0;*(x+i)!=0;i+)*(x+i)-=32;,例:編寫一個(gè)函數(shù)string_cut(char*str,charc),如果字符串str中包含字符變量c,則輸出其后的字符序列,否則輸出空字符。,#includestring_cut(char*str,charc)for(;*str!=0,voidmain()charstring20=Beijing;charch;scanf(%c,例:有3個(gè)字符串存放在一維指針數(shù)組中,編寫一個(gè)程序,找出3個(gè)串中ASCII碼最大的一個(gè)字母并輸出。,分析:類似于二維數(shù)組,在每個(gè)字符串中查找最大的字
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 邊坡作業(yè)安全培訓(xùn)課件
- 施工場地治安保衛(wèi)管理計(jì)劃
- 車險(xiǎn)培訓(xùn)課件2021
- 車隊(duì)安全運(yùn)營培訓(xùn)內(nèi)容課件
- 民族運(yùn)動會征集宣傳口號方案
- 機(jī)器人高級技師實(shí)操試題題庫
- 車間頂崗安全培訓(xùn)內(nèi)容課件
- 2026年山東檔案職稱考試(檔案高級管理理論與工作實(shí)務(wù))歷年題及答案
- 酒店客房用品采購與驗(yàn)收制度
- 2025年小程序開發(fā)與私域流量轉(zhuǎn)化工作總結(jié)(2篇)
- 2026屆湖北省黃岡市重點(diǎn)名校數(shù)學(xué)高一上期末質(zhì)量檢測試題含解析
- 2026年滬教版初一歷史上冊期末考試題目及答案
- 工廠交貨協(xié)議書
- 保護(hù)野生動物安全課件
- 天津市八校聯(lián)考2025屆高三上學(xué)期1月期末考試英語試卷(含答案無聽力原文及音頻)
- 金太陽陜西省2025-2026學(xué)年高一上學(xué)期12月考試政治(26-167A)(含答案)
- 土木工程科學(xué)數(shù)據(jù)分析方法 課件 第3章 試驗(yàn)數(shù)據(jù)誤差及處理 -
- 2026屆遼寧省遼南協(xié)作校高一數(shù)學(xué)第一學(xué)期期末監(jiān)測試題含解析
- 2026中國中式餐飲白皮書-
- 2025年北京航空航天大學(xué)馬克思主義基本原理概論期末考試模擬題帶答案解析(必刷)
- 江蘇省2025年普通高中學(xué)業(yè)水平合格性考試語文試卷(含答案)
評論
0/150
提交評論