第講-指針優(yōu)秀文檔_第1頁(yè)
第講-指針優(yōu)秀文檔_第2頁(yè)
第講-指針優(yōu)秀文檔_第3頁(yè)
第講-指針優(yōu)秀文檔_第4頁(yè)
第講-指針優(yōu)秀文檔_第5頁(yè)
已閱讀5頁(yè),還剩14頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第15講指針一、指針的概念二、指針的運(yùn)算1、存儲(chǔ)單元與地址內(nèi)存:是以字節(jié)為單位的一片存儲(chǔ)空間。存儲(chǔ)單元:存放一個(gè)字節(jié)數(shù)據(jù)的存儲(chǔ)器。存儲(chǔ)單元的內(nèi)容:存放在存儲(chǔ)單元內(nèi)的數(shù)據(jù)。存儲(chǔ)單元地址:為了便于訪問(wèn)存儲(chǔ)單元,給每個(gè)存儲(chǔ)單元一個(gè)唯一的編號(hào)。一、指針的概念(P136)printf("\n");才可以將一個(gè)指針變量與一個(gè)整數(shù)n做加減運(yùn)算。*p1=20,*p2=10main()

{int*p1,*p2,x1=10,x2=20,t;實(shí)例2:指針運(yùn)算符的使用p1=&x1;p2=&x2;intn=6,*p1,*p2;printf("2)*p1=%d,*p2=%d\n",*p1,*p2);main()

{int*p1,*p2,*s;printf("%3d",*p);例如:設(shè)有inti,*p1;#include<stdio.main()

{int*p1,*p2,x1=10,x2=20,t;main()

{inta=50,*p;//聲明整型指針變量p1)指針變量的名字是p1和p2。變量與指針變量:當(dāng)把變量x的地址存入指針變量p后,就說(shuō)這個(gè)指針變量p的指針指向該變量x。intn=6,*p1,*p2;···

···2007200320022000x=10;y=‘a(chǎn)’;z=9.8;2字節(jié)1字節(jié)4字節(jié)a109.8intx;chary;floatz;例:2、變量的三要素:名字、類(lèi)型和值間接訪問(wèn)方式:通過(guò)指向變量的指針來(lái)訪問(wèn)變量。p1=&x1;p2=&x2;1)*p1=0,*p2=0例2兩個(gè)指針變量交換指向。例如:設(shè)有inti,*p1;例如:inti,*ptr1=&i;//指針ptr1初始化指向i例如:int*p1,*p2;printf("*p=%d,p=%x\n",*p,p);例如:int*p1,*p2;#include<stdio.3)指針變量的值表示的是它所指向變量的地址,若一個(gè)指針變量它沒(méi)有指向任何變量,它的值為0。2)*p1=6,*p2=1實(shí)例1:指針的使用t=x1;x1=x2;x2=t;

printf("*p1=%d,*p2=%d\n",*p1,*p2);a=5;p=&a;pp=&p;例指針與一維數(shù)組。3、指針和指針變量指針:就是變量的內(nèi)存地址,是一個(gè)常量。指針變量:就是存放變量?jī)?nèi)存地址的變量。變量與指針變量:當(dāng)把變量x的地址存入指針變量p后,就說(shuō)這個(gè)指針變量p的指針指向該變量x。

指針變量p

指向

2000

2000

變量x

10

4、對(duì)內(nèi)存單元的訪問(wèn)方式:直接訪問(wèn)方式:通過(guò)變量名訪問(wèn)。間接訪問(wèn)方式:通過(guò)指向變量的指針來(lái)訪問(wèn)變量。1、指針變量的定義

格式:類(lèi)型說(shuō)明符*指針變量名1,···;例如:

int*p1,*p2;二、指針的運(yùn)算(P137)說(shuō)明:1)指針變量的名字是p1和p2。若寫(xiě)成int*p1,p2;則p2被定義為整型變量而非指針變量。2)指針變量的類(lèi)型是定義時(shí)所規(guī)定的指向變量的類(lèi)型,如p1、p2只能指向整型變量,不能指向?qū)嵭秃妥址妥兞俊?)指針變量的值表示的是它所指向變量的地址,若一個(gè)指針變量它沒(méi)有指向任何變量,它的值為0。2、指針運(yùn)算符與取地址運(yùn)算符(P138)1)取地址運(yùn)算符:“&”作用:取變量的地址。例如:設(shè)有inti,*p1;p1=&i;注意:不能對(duì)常量、表達(dá)式進(jìn)行”&”運(yùn)算。例如:設(shè)有int*p2,*p3;下面的運(yùn)算是錯(cuò)誤的。p2=&68;p3=&(i+1);&運(yùn)算符返回某個(gè)變量的內(nèi)存地址。而指針變量就可以通過(guò)&的賦值語(yǔ)句,指向該變量。例:p1=&i;/*將i的地址賦給指針變量p1*/

p2=&chr;/*將chr的地址賦給指針變量p2*/p1p2chri指針P2指向了字符型變量chr指針P1指向了整型變量i作用:取指針?biāo)赶虻牡刂房臻g的內(nèi)容,即取指針?biāo)赶虻淖兞康闹?。?:

inti=100,*p1;p1=&i;printf(“%d\n”,*p1);//顯示:1002)指針運(yùn)算符(間接訪問(wèn)運(yùn)算符):“*”例2:

p1=&i;/*指針變量p1指向i*/

*p1=10;/*把10存入p1所指的變量中*/說(shuō)明:*p1=10;等同于語(yǔ)句:i=10;

實(shí)例1:

指針的使用程序運(yùn)行結(jié)果:*p=50,p=xxxxa=100,&a=xxxx#include<stdio.h>main()

{inta=50,*p;//聲明整型指針變量p

p=&a;//整型指針變量p指向整型變量aprintf("*p=%d,p=%x\n",*p,p);*p=100;

printf("a=%d,&a=%x\n",a,&a);

}實(shí)例2:指針運(yùn)算符的使用#include<stdio.h>main()

{int*p1,*p2,x1,x2;scanf("%d%d",&x1,&x2);p1=&x1;p2=&x2;printf("*p1=%d,*p2=%d\n",*p1,*p2);p2=p1;

printf("*p1=%d,*p2=%d\n",*p1,*p2);}輸入:12輸出:*p1=1,*p2=2*p1=1,*p2=13、指針變量的初始化(P139)初始化:在定義指針變量的同時(shí)對(duì)指針變量賦值。格式:類(lèi)型名*指針變量名1=初始地址值,···;注意:指針變量在使用前必須要有確定的值,即指向一個(gè)變量。例如:

inti,*ptr1=&i;//指針ptr1初始化指向ifloat*f1=0,*f2=NULL;//指針初始化為空4、指針的運(yùn)算(P139)1)指針運(yùn)算的實(shí)質(zhì):地址的運(yùn)算。2)指針可以參與的運(yùn)算指針賦值運(yùn)算:賦地址運(yùn)算。指針?biāo)阈g(shù)運(yùn)算:指針加(減)一個(gè)整數(shù)運(yùn)算。兩個(gè)指針相減運(yùn)算。指針關(guān)系運(yùn)算:兩個(gè)指針比較運(yùn)算。main()

{int*p1,*p2,x1,x2;間接訪問(wèn)方式:通過(guò)指向變量的指針來(lái)訪問(wèn)變量。例指針與一維數(shù)組。5、多級(jí)指針(P142)才可以將一個(gè)指針變量與一個(gè)整數(shù)n做加減運(yùn)算。printf("*p=%d,p=%x\n",*p,p);例如:設(shè)有inti,*p1;4、對(duì)內(nèi)存單元的訪問(wèn)方式:若pi>pj,則pi所指的地址在pj所指的地址之后。printf("*p=%d,p=%x\n",*p,p);*p1=1,*p2=2#include<stdio.注意:不能對(duì)常量、表達(dá)式進(jìn)行”&”運(yùn)算。1)指針賦值運(yùn)算:賦地址運(yùn)算例1:交換兩個(gè)指針?biāo)赶蜃兞康闹怠?/p>

#include<stdio.h>main()

{int*p1,*p2,x1=10,x2=20,t;p1=&x1;p2=&x2;printf("*p1=%d,*p2=%d\n",*p1,*p2);t=x1;x1=x2;x2=t;

printf("*p1=%d,*p2=%d\n",*p1,*p2);printf("x1=%d,x2=%d\n",x1,x2);}程序運(yùn)行結(jié)果:*p1=10,*p2=20*p1=20,*p2=10

x1=20,x2=10例2

兩個(gè)指針變量交換指向。#include<stdio.h>main()

{int*p1,*p2,*s;intx1=10,x2=20;

p1=&x1;p2=&x2;

printf("*p1=%d,*p2=%d\n",*p1,*p2);

s=p2;p2=p1;p1=s;

printf("*p1=%d,*p2=%d\n",*p1,*p2);}程序運(yùn)行結(jié)果:*p1=10,*p2=20*p1=20,*p2=102)算術(shù)運(yùn)算:移動(dòng)指針(P141)移動(dòng)指針:對(duì)指針變量進(jìn)行加上或減去一個(gè)整數(shù)、或通過(guò)賦值運(yùn)算,使指針變量指向相鄰的存儲(chǔ)單元。指針移動(dòng)是以它指向的數(shù)據(jù)類(lèi)型所占的字節(jié)數(shù)為移動(dòng)單位。只有當(dāng)指針指向一串連續(xù)的存儲(chǔ)單元時(shí),指針的移動(dòng)才有意義。才可以將一個(gè)指針變量與一個(gè)整數(shù)n做加減運(yùn)算。例

指針與一維數(shù)組。#include<stdio.h>main(){inta[10]={0,1,2,3,4,5,6,7,8,9};intn=6,*p1,*p2;p1=p2=a;printf("1)*p1=%d,*p2=%d\n",*p1,*p2);p1=p1+n;p2++;printf("2)*p1=%d,*p2=%d\n",*p1,*p2);

--p1;p1=p1-4;n=p1-p2;printf("3)*p1=%d,*p2=%d,n=%d\n",*p1,*p2,n);}程序運(yùn)行結(jié)果:1)*p1=0,*p2=02)*p1=6,*p2=13)*p1=1,*p2=1,n=03)兩個(gè)指針的關(guān)系運(yùn)算(P142)兩個(gè)指針的比較運(yùn)算經(jīng)常用于數(shù)組,以判斷兩個(gè)指針?biāo)笖?shù)組元素位置的先后。例如:若pi<pj,則pi所指的地址在pj所指的地址之前。若pi>pj,則pi所指的地址在pj所指的地址之后。若pi==pj,則pi所指的地址與pj所指的地址相同。若pi!=pj,則pi所指的地址與pj所指的地址不同。例1

使用指針變量對(duì)數(shù)組操作。#include<stdio.h>voidmain(){ inta[]={1,2,3,4,5},i;int*p1=&a[0],*p2=&a[4],*p;for(p=p1;p<=p2;p++)printf("%3d",*p);printf("\n");for(p=p2;p>=p1;p--)printf("%3d",*p);printf("\n");}程序運(yùn)行結(jié)果:123455

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論