




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
同學(xué)們,加油噢!同學(xué)們,加油噢!1教學(xué)主題指針變量的定義和運(yùn)算、指針變量作函數(shù)參數(shù)教學(xué)目標(biāo)通過(guò)本次課的學(xué)習(xí),使學(xué)生掌握指針的概念、指針變量的概念和定義方法、指針變量的運(yùn)算、以及指針變量作為函數(shù)參數(shù)的用法。教學(xué)重點(diǎn)1、指針變量的定義、賦值2、指針變量的運(yùn)算3、指針變量作為函數(shù)參數(shù)的用法教學(xué)難點(diǎn)1、指針和指針變量的區(qū)別2、指針變量作為函數(shù)參數(shù)的實(shí)質(zhì)及效果教案教學(xué)主題指針變量的定義和運(yùn)算、指針變量作函數(shù)參數(shù)教學(xué)目標(biāo)2主要內(nèi)容
指針和指針變量的概念
指針變量的定義和賦值
指針變量的運(yùn)算
指針變量作為函數(shù)的參數(shù)主要內(nèi)容指針和指針變量的概念3為什么引入指針
指針是C語(yǔ)言的特色、精華程序設(shè)計(jì)時(shí)應(yīng)用指針的好處①支持動(dòng)態(tài)分配內(nèi)存②能有效而方便地使用數(shù)組(包括字符串)③可以在函數(shù)調(diào)用時(shí)返回多個(gè)值為什么引入指針指針是C語(yǔ)言的特色、精華4舉例在程序中,有如下語(yǔ)句。問(wèn):內(nèi)存中會(huì)如何變化?intx,y;x=12;y=20;1220內(nèi)存單元的編號(hào),叫地址&x&y舉例在程序中,有如下語(yǔ)句。問(wèn):內(nèi)存中會(huì)如何變化?1220內(nèi)5內(nèi)存地址在計(jì)算機(jī)中,所有的數(shù)據(jù)都是存放在存儲(chǔ)器中的。一般把存儲(chǔ)器中的一個(gè)字節(jié)稱為一個(gè)內(nèi)存單元。為了正確地訪問(wèn)這些內(nèi)存單元,必須為每個(gè)內(nèi)存單元編上號(hào)。根據(jù)編號(hào)就可以準(zhǔn)確地找到該內(nèi)存單元。內(nèi)存單元的編號(hào)也叫做內(nèi)存地址。內(nèi)存地址在計(jì)算機(jī)中,所有的數(shù)據(jù)都是存放在存儲(chǔ)器中的。6程序中一個(gè)變量包含了兩個(gè)概念:①變量在內(nèi)存中的地址②存放在該地址中的內(nèi)容注意變量的地址是由系統(tǒng)分配的,在程序中只可使用,不能修改。內(nèi)存單元的地址和內(nèi)存單元的內(nèi)容內(nèi)存單元的地址內(nèi)存單元的內(nèi)容程序中一個(gè)變量包含了兩個(gè)概念:內(nèi)存單元的地址和內(nèi)存單元的內(nèi)7指針和指針變量的定義C語(yǔ)言中,將地址形象化地稱為“指針”。意思是通過(guò)它可以找到以它為地址的內(nèi)存單元。一個(gè)變量的地址稱為該變量的指針。即:指針就是內(nèi)存地址。如果一個(gè)變量專門存放另一個(gè)變量的地址(即指針),則稱為指針變量。問(wèn):指針、指針變量是一回事嗎?指針和指針變量的定義C語(yǔ)言中,將地址形象化地稱為“指針”。8指針變量舉例在圖6-2中,變量x占用了20A0起的2個(gè)內(nèi)存單元,其內(nèi)容(值)為12。設(shè)有指針變量P,內(nèi)容為20A0。這種情況我們稱為P指向變量x,或稱P是指向變量x的指針變量。返回指針變量舉例在圖6-2中,變量x占用了20A0起的2個(gè)內(nèi)存9指針變量的定義定義指針變量時(shí)要包括三個(gè)內(nèi)容:①指針變量類型說(shuō)明,即標(biāo)明變量為一個(gè)指針變量。②指針變量名。③指針變量所指向的變量的數(shù)據(jù)類型。其一般形式為:
類型標(biāo)識(shí)符*指針變量名;標(biāo)明這是一個(gè)指針變量變量名本指針變量所指向的變量的數(shù)據(jù)類型指針變量的定義定義指針變量時(shí)要包括三個(gè)內(nèi)容:標(biāo)明這是一個(gè)指10定義指針變量舉例針對(duì)圖6-2,應(yīng)該如何定義x和p?intx;int*p;表示p是一個(gè)指針變量,它指向某個(gè)整型變量。如何給這兩個(gè)變量賦值?x=12;
p呢?定義指針變量舉例針對(duì)圖6-2,應(yīng)該如何定義x和p?11指針變量的賦值指針變量同普通變量一樣,使用之前不僅要定義,而且必須賦予具體的值。給指針變量賦值只能賦予地址,不能賦予任何其它數(shù)據(jù)。C語(yǔ)言中提供了地址運(yùn)算符&來(lái)表示變量的地址。其一般形式為:&變量名例如:&a變示變量a的地址。指針變量的賦值指針變量同普通變量一樣,使用之前不僅要定義,而12指針變量賦值舉例針對(duì)圖6-2,有如下語(yǔ)句:intx;int*p;
x=12;如何給p變量賦值?
p=&x;如何在定義的同時(shí)給變量賦值?
intx=12;int*p=&x;在用之前,x已定義指針變量賦值舉例針對(duì)圖6-2,有如下語(yǔ)句:在用之前,x已定13給指針變量賦值時(shí)的注意點(diǎn)可以讓指針變量不指向任何變量。int*p;p=NULL;(NULL在stdio.h中有定義)通常不允許直接把一個(gè)數(shù)值賦給指針變量。int*p;p=1000;被賦值的指針變量前不能再加“*”說(shuō)明符。inta,*p;*p=&a;一個(gè)指針變量只能指向同類型的變量。floatb;int*p;p=&b;錯(cuò)誤的用法錯(cuò)誤的用法錯(cuò)誤的用法給指針變量賦值時(shí)的注意點(diǎn)可以讓指針變量不指向任何變量。錯(cuò)誤14指針變量的特殊性
①指針變量也是一種變量。②指針變量只不過(guò)是一種特殊的變量,其特殊性表現(xiàn)在類型和值上。③指針變量的類型是指針?biāo)赶虻淖兞康念愋汀"苤羔樧兞康闹凳悄硞€(gè)變量在內(nèi)存中的地址。指針變量的特殊性①指針變量也是一種變量。15指針變量使用技巧
指針變量的使用原則:先賦初值(地址),再使用。
理由:安全使用指針變量的方法:對(duì)暫時(shí)不使用的指針,可先定義成空指針。即將其賦值為NULL。使用未經(jīng)賦值的(浮游)指針危害很大。返回指針變量使用技巧指針變量的使用原則:使用未經(jīng)賦值的(浮游16與指針變量有關(guān)的運(yùn)算符與指針變量有關(guān)的運(yùn)算符有兩個(gè):&和*。
取地址運(yùn)算符(&)單目運(yùn)算符,右結(jié)合。
取內(nèi)容運(yùn)算符(*),也叫指針運(yùn)算符單目運(yùn)算符,右結(jié)合。
作用:用來(lái)表示指針變量所指向的變量的內(nèi)容。與指針變量有關(guān)的運(yùn)算符與指針變量有關(guān)的運(yùn)算符有兩個(gè):&和*17指針變量引用舉例問(wèn):下面程序的運(yùn)行結(jié)果是什么?#include"stdio.h"voidmain(){inta,b;int*p;a=123;p=&a;b=*p;*p=-200;printf("a=%d,b=%d\n",a,b);p=&b;printf(“%d,%d\n",b,*p);}程序運(yùn)行結(jié)果a=-200,b=123123,123運(yùn)行程序(3_1)思考①p的指向;②第2個(gè)printf中的訪問(wèn)方式指針變量引用舉例問(wèn):下面程序的運(yùn)行結(jié)果是什么?程序運(yùn)行結(jié)果18指針變量的運(yùn)算除了&和*兩種運(yùn)算之外,指針變量還可以進(jìn)行賦值運(yùn)算、加減算術(shù)運(yùn)算和關(guān)系運(yùn)算。指針變量的運(yùn)算除了&和*兩種運(yùn)算之外,指針變量還可以進(jìn)行賦19指針變量的賦值運(yùn)算把一個(gè)指針變量的值賦予指向相同類型變量的另一個(gè)指針變量。inta,*pa=&a,*pb;pb=pa;把數(shù)組的首地址賦予同類型的指針變量。inta[5],*pa;pa=a;或pa=&a[0];把字符串的首地址賦予指向字符類型的指針變量。char*pc;pc="Iamastudent!";也可用初始化賦值的方法寫為:char*pc="Iamastudent!";不表示把整個(gè)字符串裝入指針變量,只是把字符串的首地址裝入指針變量。回顧字符數(shù)組的賦值!指針變量的賦值運(yùn)算把一個(gè)指針變量的值賦予指向相同類型變量的20對(duì)于指向數(shù)組的指針變量,可以加上(或減去)一個(gè)整數(shù)n。設(shè)pa是指向數(shù)組a的指針變量,則pa+n、pa-n、pa++、++pa、pa--、--pa運(yùn)算都是合法的。舉例inta[10],*pa;pa=a;pa=pa+2;指針變量的加減運(yùn)算1pa?運(yùn)行程序(3_2)看源程序(3_2)對(duì)于指向數(shù)組的指針變量,可以加上(或減去)一個(gè)整數(shù)n。指針21指針變量的加減運(yùn)算2指向同一數(shù)組的兩個(gè)指針變量,可以進(jìn)行減法運(yùn)算。(兩指針變量相減)如果兩指針變量指向同一個(gè)數(shù)組,則相減的結(jié)果是兩個(gè)指針之間相差的元素個(gè)數(shù)。
例如在右圖中,p1指向a[1],p2指向a[5],則p2-p1=?注意:p1+p2無(wú)任何實(shí)際意義。p1p24運(yùn)行程序(3_3)看源程序(3_3)指針變量的加減運(yùn)算2指向同一數(shù)組的兩個(gè)指針變量,可以進(jìn)行減22兩指針變量相減的應(yīng)用【例6-2】求字符串的長(zhǎng)度,要求不用strlen庫(kù)函數(shù)。源程序#include"stdio.h"voidmain(){char*s="CProgram!";char*p=s;intlen;while(*p!='\0')p++;len=p-s;printf("該字符串的長(zhǎng)度為%d。\n",len);}程序運(yùn)行結(jié)果該字符串的長(zhǎng)度為9。運(yùn)行程序(3_4)兩指針變量相減的應(yīng)用【例6-2】求字符串的長(zhǎng)度,要求不用st23指針變量的關(guān)系運(yùn)算
指向同一數(shù)組的兩指針變量可以進(jìn)行關(guān)系運(yùn)算,表示它們所指數(shù)組元素的地址之間的大小關(guān)系。例如:右圖中,表達(dá)式“p2>p1”的值為?任何類型的指針變量還可以與NULL進(jìn)行比較。例如:設(shè)p為指針變量,“p==NULL”為真時(shí)表示p是空指針,它不指向任何變量;“p!=NULL”為真時(shí)表示p不是空指針。
p1p2真指針變量的關(guān)系運(yùn)算指向同一數(shù)組的兩指針變量可以進(jìn)行關(guān)系運(yùn)算24指針變量關(guān)系運(yùn)算的應(yīng)用【例】利用指針變量實(shí)現(xiàn)輸出數(shù)組元素。源程序#include"stdio.h"voidmain(){inta[5]={1,2,3,4,5};int*p,*end;p=a;end=a+5;while(p<end){printf(“%d”,*p);p++;}}運(yùn)行程序(3_5)返回指針變量關(guān)系運(yùn)算的應(yīng)用【例】利用指針變量實(shí)現(xiàn)輸出數(shù)組元素。運(yùn)25回顧思考兩個(gè)問(wèn)題①上學(xué)期學(xué)過(guò)哪些變量?②作為函數(shù)參數(shù)時(shí),采用什么方式傳遞數(shù)據(jù)?看源程序(3_6)舉例回顧思考兩個(gè)問(wèn)題看源程序(3_6)舉例26函數(shù)參數(shù)傳遞規(guī)則總結(jié)
C語(yǔ)言的函數(shù)參數(shù)傳遞規(guī)則——單向值傳遞
就“值”而言,有兩種:
傳遞數(shù)值——修改形參,不會(huì)影響到實(shí)參傳遞地址——通過(guò)形參可以訪問(wèn)實(shí)參函數(shù)參數(shù)傳遞規(guī)則總結(jié)C語(yǔ)言的函數(shù)參數(shù)傳遞規(guī)則27指針變量作為函數(shù)的參數(shù)
指針變量作函數(shù)參數(shù)
傳遞的值:地址特點(diǎn):可以改變實(shí)參指針變量所指向的變量的值。
好處:可以返回多個(gè)值指針變量作為函數(shù)的參數(shù)指針變量作函數(shù)參數(shù)28指針變量作函數(shù)參數(shù)舉例1【例6-3】編寫程序,完成一個(gè)學(xué)生兩門課程成績(jī)的輸入和輸出。要求用兩個(gè)函數(shù)input和output分別實(shí)現(xiàn)成績(jī)的輸入和輸出。
分析⑴假定兩門課程成績(jī)存放在變量math和english中,在main函數(shù)中定義如下:intmath,english;⑵這兩門課程成績(jī)的輸入要求在函數(shù)input中完成,而輸出又要在函數(shù)output中進(jìn)行,所以,調(diào)用完input函數(shù)后必須將兩門課程成績(jī)返回到主函數(shù),再以參數(shù)的形式傳遞給output函數(shù)。⑶因此,input函數(shù)必須以指針變量作為函數(shù)參數(shù),以便能修改主函數(shù)中變量math和english的值。思考:output函數(shù)的參數(shù)定義成什么形式?
運(yùn)行程序(3_7)看源程序(3_7)源程序指針變量作函數(shù)參數(shù)舉例1【例6-3】編寫程序,完成一個(gè)學(xué)生兩29指針變量作函數(shù)參數(shù)舉例2【例6-4】編寫程序,輸入a和b兩個(gè)整數(shù),處理后使a中存放兩者較小的那一個(gè),b中存放兩者較大的那一個(gè),最后按a、b的順序輸出。要求:用函數(shù)實(shí)現(xiàn)兩個(gè)數(shù)的交換。分析當(dāng)輸入數(shù)據(jù)后,a的值比b大,則需要交換它們的值。流程圖源程序運(yùn)行程序(3_8)看源程序(3_8)思考:正確嗎?為什么?
指針變量作函數(shù)參數(shù)舉例2【例6-4】編寫程序,輸入a和b兩個(gè)30指針變量作函數(shù)參數(shù)舉例2【例6-4】編寫程序,輸入a和b兩個(gè)整數(shù),處理后使a中存放兩者較小的那一個(gè),b中存放兩者較大的那一個(gè),最后按a、b的順序輸出。要求:用函數(shù)實(shí)現(xiàn)兩個(gè)數(shù)的交換。再分析用函數(shù)swap實(shí)現(xiàn)交換兩個(gè)整數(shù)的值,兩個(gè)整數(shù)以參數(shù)的形式由main函數(shù)傳遞給swap函數(shù)。因?yàn)榻粨Q完以后還要把值返回給main函數(shù),所以,以指針變量作為swap函數(shù)的參數(shù)。指針變量作函數(shù)參數(shù)舉例2【例6-4】編寫程序,輸入a和b兩個(gè)31指針變量作函數(shù)參數(shù)舉例2【例6-4】編寫程序,輸入a和b兩個(gè)整數(shù),處理后使a中存放兩者較小的那一個(gè),b中存放兩者較大的那一個(gè),最后按a、b的順序輸出。要求:用函數(shù)實(shí)現(xiàn)兩個(gè)數(shù)的交換。流程圖源程序運(yùn)行程序(3_9)看源程序(3_9)指針變量作函數(shù)參數(shù)舉例2【例6-4】編寫程序,輸入a和b兩個(gè)32swap函數(shù)總結(jié)voidswap(int*p1,int*p2){inttemp;temp=*p1;*p1=*p2;*p2=temp;}voidswap(int*p1,int*p2){int*temp;temp=p1;p1=p2;p2=temp;}voidswap(intp1,intp2){inttemp;temp=p1;p1=p2;p2=temp;}正確錯(cuò)誤這種方法能實(shí)現(xiàn)題目要求嗎?為什么?
運(yùn)行程序(3_10)看源程序(3_10)swap函數(shù)總結(jié)voidswap(int*p1,in33本次課總結(jié)指針和指針變量的概念指針變量的定義和賦值
指針變量的運(yùn)算指針變量作為函數(shù)參數(shù)的用法本次課總結(jié)指針和指針變量的概念34下課ThankYou!TheEnd.下課ThankYou!TheEnd.35同學(xué)們,加油噢!同學(xué)們,加油噢!36教學(xué)主題指針變量的定義和運(yùn)算、指針變量作函數(shù)參數(shù)教學(xué)目標(biāo)通過(guò)本次課的學(xué)習(xí),使學(xué)生掌握指針的概念、指針變量的概念和定義方法、指針變量的運(yùn)算、以及指針變量作為函數(shù)參數(shù)的用法。教學(xué)重點(diǎn)1、指針變量的定義、賦值2、指針變量的運(yùn)算3、指針變量作為函數(shù)參數(shù)的用法教學(xué)難點(diǎn)1、指針和指針變量的區(qū)別2、指針變量作為函數(shù)參數(shù)的實(shí)質(zhì)及效果教案教學(xué)主題指針變量的定義和運(yùn)算、指針變量作函數(shù)參數(shù)教學(xué)目標(biāo)37主要內(nèi)容
指針和指針變量的概念
指針變量的定義和賦值
指針變量的運(yùn)算
指針變量作為函數(shù)的參數(shù)主要內(nèi)容指針和指針變量的概念38為什么引入指針
指針是C語(yǔ)言的特色、精華程序設(shè)計(jì)時(shí)應(yīng)用指針的好處①支持動(dòng)態(tài)分配內(nèi)存②能有效而方便地使用數(shù)組(包括字符串)③可以在函數(shù)調(diào)用時(shí)返回多個(gè)值為什么引入指針指針是C語(yǔ)言的特色、精華39舉例在程序中,有如下語(yǔ)句。問(wèn):內(nèi)存中會(huì)如何變化?intx,y;x=12;y=20;1220內(nèi)存單元的編號(hào),叫地址&x&y舉例在程序中,有如下語(yǔ)句。問(wèn):內(nèi)存中會(huì)如何變化?1220內(nèi)40內(nèi)存地址在計(jì)算機(jī)中,所有的數(shù)據(jù)都是存放在存儲(chǔ)器中的。一般把存儲(chǔ)器中的一個(gè)字節(jié)稱為一個(gè)內(nèi)存單元。為了正確地訪問(wèn)這些內(nèi)存單元,必須為每個(gè)內(nèi)存單元編上號(hào)。根據(jù)編號(hào)就可以準(zhǔn)確地找到該內(nèi)存單元。內(nèi)存單元的編號(hào)也叫做內(nèi)存地址。內(nèi)存地址在計(jì)算機(jī)中,所有的數(shù)據(jù)都是存放在存儲(chǔ)器中的。41程序中一個(gè)變量包含了兩個(gè)概念:①變量在內(nèi)存中的地址②存放在該地址中的內(nèi)容注意變量的地址是由系統(tǒng)分配的,在程序中只可使用,不能修改。內(nèi)存單元的地址和內(nèi)存單元的內(nèi)容內(nèi)存單元的地址內(nèi)存單元的內(nèi)容程序中一個(gè)變量包含了兩個(gè)概念:內(nèi)存單元的地址和內(nèi)存單元的內(nèi)42指針和指針變量的定義C語(yǔ)言中,將地址形象化地稱為“指針”。意思是通過(guò)它可以找到以它為地址的內(nèi)存單元。一個(gè)變量的地址稱為該變量的指針。即:指針就是內(nèi)存地址。如果一個(gè)變量專門存放另一個(gè)變量的地址(即指針),則稱為指針變量。問(wèn):指針、指針變量是一回事嗎?指針和指針變量的定義C語(yǔ)言中,將地址形象化地稱為“指針”。43指針變量舉例在圖6-2中,變量x占用了20A0起的2個(gè)內(nèi)存單元,其內(nèi)容(值)為12。設(shè)有指針變量P,內(nèi)容為20A0。這種情況我們稱為P指向變量x,或稱P是指向變量x的指針變量。返回指針變量舉例在圖6-2中,變量x占用了20A0起的2個(gè)內(nèi)存44指針變量的定義定義指針變量時(shí)要包括三個(gè)內(nèi)容:①指針變量類型說(shuō)明,即標(biāo)明變量為一個(gè)指針變量。②指針變量名。③指針變量所指向的變量的數(shù)據(jù)類型。其一般形式為:
類型標(biāo)識(shí)符*指針變量名;標(biāo)明這是一個(gè)指針變量變量名本指針變量所指向的變量的數(shù)據(jù)類型指針變量的定義定義指針變量時(shí)要包括三個(gè)內(nèi)容:標(biāo)明這是一個(gè)指45定義指針變量舉例針對(duì)圖6-2,應(yīng)該如何定義x和p?intx;int*p;表示p是一個(gè)指針變量,它指向某個(gè)整型變量。如何給這兩個(gè)變量賦值?x=12;
p呢?定義指針變量舉例針對(duì)圖6-2,應(yīng)該如何定義x和p?46指針變量的賦值指針變量同普通變量一樣,使用之前不僅要定義,而且必須賦予具體的值。給指針變量賦值只能賦予地址,不能賦予任何其它數(shù)據(jù)。C語(yǔ)言中提供了地址運(yùn)算符&來(lái)表示變量的地址。其一般形式為:&變量名例如:&a變示變量a的地址。指針變量的賦值指針變量同普通變量一樣,使用之前不僅要定義,而47指針變量賦值舉例針對(duì)圖6-2,有如下語(yǔ)句:intx;int*p;
x=12;如何給p變量賦值?
p=&x;如何在定義的同時(shí)給變量賦值?
intx=12;int*p=&x;在用之前,x已定義指針變量賦值舉例針對(duì)圖6-2,有如下語(yǔ)句:在用之前,x已定48給指針變量賦值時(shí)的注意點(diǎn)可以讓指針變量不指向任何變量。int*p;p=NULL;(NULL在stdio.h中有定義)通常不允許直接把一個(gè)數(shù)值賦給指針變量。int*p;p=1000;被賦值的指針變量前不能再加“*”說(shuō)明符。inta,*p;*p=&a;一個(gè)指針變量只能指向同類型的變量。floatb;int*p;p=&b;錯(cuò)誤的用法錯(cuò)誤的用法錯(cuò)誤的用法給指針變量賦值時(shí)的注意點(diǎn)可以讓指針變量不指向任何變量。錯(cuò)誤49指針變量的特殊性
①指針變量也是一種變量。②指針變量只不過(guò)是一種特殊的變量,其特殊性表現(xiàn)在類型和值上。③指針變量的類型是指針?biāo)赶虻淖兞康念愋汀"苤羔樧兞康闹凳悄硞€(gè)變量在內(nèi)存中的地址。指針變量的特殊性①指針變量也是一種變量。50指針變量使用技巧
指針變量的使用原則:先賦初值(地址),再使用。
理由:安全使用指針變量的方法:對(duì)暫時(shí)不使用的指針,可先定義成空指針。即將其賦值為NULL。使用未經(jīng)賦值的(浮游)指針危害很大。返回指針變量使用技巧指針變量的使用原則:使用未經(jīng)賦值的(浮游51與指針變量有關(guān)的運(yùn)算符與指針變量有關(guān)的運(yùn)算符有兩個(gè):&和*。
取地址運(yùn)算符(&)單目運(yùn)算符,右結(jié)合。
取內(nèi)容運(yùn)算符(*),也叫指針運(yùn)算符單目運(yùn)算符,右結(jié)合。
作用:用來(lái)表示指針變量所指向的變量的內(nèi)容。與指針變量有關(guān)的運(yùn)算符與指針變量有關(guān)的運(yùn)算符有兩個(gè):&和*52指針變量引用舉例問(wèn):下面程序的運(yùn)行結(jié)果是什么?#include"stdio.h"voidmain(){inta,b;int*p;a=123;p=&a;b=*p;*p=-200;printf("a=%d,b=%d\n",a,b);p=&b;printf(“%d,%d\n",b,*p);}程序運(yùn)行結(jié)果a=-200,b=123123,123運(yùn)行程序(3_1)思考①p的指向;②第2個(gè)printf中的訪問(wèn)方式指針變量引用舉例問(wèn):下面程序的運(yùn)行結(jié)果是什么?程序運(yùn)行結(jié)果53指針變量的運(yùn)算除了&和*兩種運(yùn)算之外,指針變量還可以進(jìn)行賦值運(yùn)算、加減算術(shù)運(yùn)算和關(guān)系運(yùn)算。指針變量的運(yùn)算除了&和*兩種運(yùn)算之外,指針變量還可以進(jìn)行賦54指針變量的賦值運(yùn)算把一個(gè)指針變量的值賦予指向相同類型變量的另一個(gè)指針變量。inta,*pa=&a,*pb;pb=pa;把數(shù)組的首地址賦予同類型的指針變量。inta[5],*pa;pa=a;或pa=&a[0];把字符串的首地址賦予指向字符類型的指針變量。char*pc;pc="Iamastudent!";也可用初始化賦值的方法寫為:char*pc="Iamastudent!";不表示把整個(gè)字符串裝入指針變量,只是把字符串的首地址裝入指針變量。回顧字符數(shù)組的賦值!指針變量的賦值運(yùn)算把一個(gè)指針變量的值賦予指向相同類型變量的55對(duì)于指向數(shù)組的指針變量,可以加上(或減去)一個(gè)整數(shù)n。設(shè)pa是指向數(shù)組a的指針變量,則pa+n、pa-n、pa++、++pa、pa--、--pa運(yùn)算都是合法的。舉例inta[10],*pa;pa=a;pa=pa+2;指針變量的加減運(yùn)算1pa?運(yùn)行程序(3_2)看源程序(3_2)對(duì)于指向數(shù)組的指針變量,可以加上(或減去)一個(gè)整數(shù)n。指針56指針變量的加減運(yùn)算2指向同一數(shù)組的兩個(gè)指針變量,可以進(jìn)行減法運(yùn)算。(兩指針變量相減)如果兩指針變量指向同一個(gè)數(shù)組,則相減的結(jié)果是兩個(gè)指針之間相差的元素個(gè)數(shù)。
例如在右圖中,p1指向a[1],p2指向a[5],則p2-p1=?注意:p1+p2無(wú)任何實(shí)際意義。p1p24運(yùn)行程序(3_3)看源程序(3_3)指針變量的加減運(yùn)算2指向同一數(shù)組的兩個(gè)指針變量,可以進(jìn)行減57兩指針變量相減的應(yīng)用【例6-2】求字符串的長(zhǎng)度,要求不用strlen庫(kù)函數(shù)。源程序#include"stdio.h"voidmain(){char*s="CProgram!";char*p=s;intlen;while(*p!='\0')p++;len=p-s;printf("該字符串的長(zhǎng)度為%d。\n",len);}程序運(yùn)行結(jié)果該字符串的長(zhǎng)度為9。運(yùn)行程序(3_4)兩指針變量相減的應(yīng)用【例6-2】求字符串的長(zhǎng)度,要求不用st58指針變量的關(guān)系運(yùn)算
指向同一數(shù)組的兩指針變量可以進(jìn)行關(guān)系運(yùn)算,表示它們所指數(shù)組元素的地址之間的大小關(guān)系。例如:右圖中,表達(dá)式“p2>p1”的值為?任何類型的指針變量還可以與NULL進(jìn)行比較。例如:設(shè)p為指針變量,“p==NULL”為真時(shí)表示p是空指針,它不指向任何變量;“p!=NULL”為真時(shí)表示p不是空指針。
p1p2真指針變量的關(guān)系運(yùn)算指向同一數(shù)組的兩指針變量可以進(jìn)行關(guān)系運(yùn)算59指針變量關(guān)系運(yùn)算的應(yīng)用【例】利用指針變量實(shí)現(xiàn)輸出數(shù)組元素。源程序#include"stdio.h"voidmain(){inta[5]={1,2,3,4,5};int*p,*end;p=a;end=a+5;while(p<end){printf(“%d”,*p);p++;}}運(yùn)行程序(3_5)返回指針變量關(guān)系運(yùn)算的應(yīng)用【例】利用指針變量實(shí)現(xiàn)輸出數(shù)組元素。運(yùn)60回顧思考兩個(gè)問(wèn)題①上學(xué)期學(xué)過(guò)哪些變量?②作為函數(shù)參數(shù)時(shí),采用什么方式傳遞數(shù)據(jù)?看源程序(3_6)舉例回顧思考兩個(gè)問(wèn)題看源程序(3_6)舉例61函數(shù)參數(shù)傳遞規(guī)則總結(jié)
C語(yǔ)言的函數(shù)參數(shù)傳遞規(guī)則——單向值傳遞
就“值”而言,有兩種:
傳遞數(shù)值——修改形參,不會(huì)影響到實(shí)參傳遞地址——通過(guò)形參可以訪問(wèn)實(shí)參函數(shù)參數(shù)傳遞規(guī)則總結(jié)C語(yǔ)言的函數(shù)參數(shù)傳遞規(guī)則62指針變量作為函數(shù)的參數(shù)
指針變量作函數(shù)參數(shù)
傳遞的值:地址特點(diǎn):可以改變實(shí)參指針變量所指向的變量的值。
好處:可以返回多個(gè)值指針變量作為函數(shù)的參數(shù)指針變量作函數(shù)參數(shù)63指針變量作函數(shù)參數(shù)舉例1【例6-3】編寫程序,完成一個(gè)學(xué)生兩門課程成績(jī)的輸入和輸出。要求用兩個(gè)函數(shù)input和output分別實(shí)現(xiàn)成績(jī)的輸入和輸出。
分析⑴假定兩門課程成績(jī)存放在變量math和english中,在main函數(shù)中定義如下:intmath,
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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年足球裁判員考試的試題及答案水平
- 游泳救生員行業(yè)標(biāo)準(zhǔn)知識(shí)試題及答案
- 大數(shù)據(jù)數(shù)據(jù)治理創(chuàng)新技術(shù)重點(diǎn)基礎(chǔ)知識(shí)點(diǎn)
- 2025瓷磚鋪設(shè)合同合同范本 副本
- 農(nóng)業(yè)職業(yè)經(jīng)理人考試前的心態(tài)調(diào)節(jié)技巧試題及答案
- 2025承攬加工安裝廣告亭合同 標(biāo)準(zhǔn)版模板全
- 2024項(xiàng)目管理考試學(xué)習(xí)試題及答案
- 農(nóng)作物種子循環(huán)利用試題及答案
- 微生物檢驗(yàn)綜合素質(zhì)試題及答案
- 2024年模具設(shè)計(jì)師資格認(rèn)證考試資料優(yōu)化與試題及答案
- 音樂(lè)(歌唱)《買菜》
- 美團(tuán)運(yùn)營(yíng)大綱
- 【公開(kāi)課】第6課+凝神造像-中國(guó)傳統(tǒng)雕塑+課件高中美術(shù)人教版(2019)美術(shù)鑒賞
- (2.22)-一、壓花原理壓花藝術(shù)
- 國(guó)際石油合作合同協(xié)議書模式分析
- 小型手推式除雪機(jī)及論文
- 2023年初級(jí)社工證考試-社會(huì)工作實(shí)務(wù)試題及答案
- 藥事管理醫(yī)療機(jī)構(gòu)藥事管理
- 實(shí)體與虛空-凝固的音樂(lè)+課件高一上學(xué)期美術(shù)人美版(2019)美術(shù)鑒賞
- 【杜邦分析體系下?lián)P子江藥業(yè)盈利質(zhì)量案例分析(7700字)】
- 幼兒園防汛工作安全排查表
評(píng)論
0/150
提交評(píng)論