




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第15講指針一、指針的概念二、指針的運(yùn)算1、存儲單元與地址內(nèi)存:是以字節(jié)為單位的一片存儲空間。存儲單元:存放一個(gè)字節(jié)數(shù)據(jù)的存儲器。存儲單元的內(nèi)容:存放在存儲單元內(nèi)的數(shù)據(jù)。存儲單元地址:為了便于訪問存儲單元,給每個(gè)存儲單元一個(gè)唯一的編號。一、指針的概念(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后,就說這個(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、變量的三要素:名字、類型和值間接訪問方式:通過指向變量的指針來訪問變量。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è)指針變量它沒有指向任何變量,它的值為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è)常量。指針變量:就是存放變量內(nèi)存地址的變量。變量與指針變量:當(dāng)把變量x的地址存入指針變量p后,就說這個(gè)指針變量p的指針指向該變量x。
指針變量p
指向
2000
2000
變量x
10
4、對內(nèi)存單元的訪問方式:直接訪問方式:通過變量名訪問。間接訪問方式:通過指向變量的指針來訪問變量。1、指針變量的定義
格式:類型說明符*指針變量名1,···;例如:
int*p1,*p2;二、指針的運(yùn)算(P137)說明:1)指針變量的名字是p1和p2。若寫成int*p1,p2;則p2被定義為整型變量而非指針變量。2)指針變量的類型是定義時(shí)所規(guī)定的指向變量的類型,如p1、p2只能指向整型變量,不能指向?qū)嵭秃妥址妥兞俊?)指針變量的值表示的是它所指向變量的地址,若一個(gè)指針變量它沒有指向任何變量,它的值為0。2、指針運(yùn)算符與取地址運(yùn)算符(P138)1)取地址運(yùn)算符:“&”作用:取變量的地址。例如:設(shè)有inti,*p1;p1=&i;注意:不能對常量、表達(dá)式進(jìn)行”&”運(yùn)算。例如:設(shè)有int*p2,*p3;下面的運(yùn)算是錯(cuò)誤的。p2=&68;p3=&(i+1);&運(yùn)算符返回某個(gè)變量的內(nèi)存地址。而指針變量就可以通過&的賦值語句,指向該變量。例: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)算符(間接訪問運(yùn)算符):“*”例2:
p1=&i;/*指針變量p1指向i*/
*p1=10;/*把10存入p1所指的變量中*/說明:*p1=10;等同于語句: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í)對指針變量賦值。格式:類型名*指針變量名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;間接訪問方式:通過指向變量的指針來訪問變量。例指針與一維數(shù)組。5、多級指針(P142)才可以將一個(gè)指針變量與一個(gè)整數(shù)n做加減運(yùn)算。printf("*p=%d,p=%x\n",*p,p);例如:設(shè)有inti,*p1;4、對內(nèi)存單元的訪問方式:若pi>pj,則pi所指的地址在pj所指的地址之后。printf("*p=%d,p=%x\n",*p,p);*p1=1,*p2=2#include<stdio.注意:不能對常量、表達(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)算:移動指針(P141)移動指針:對指針變量進(jìn)行加上或減去一個(gè)整數(shù)、或通過賦值運(yùn)算,使指針變量指向相鄰的存儲單元。指針移動是以它指向的數(shù)據(jù)類型所占的字節(jié)數(shù)為移動單位。只有當(dāng)指針指向一串連續(xù)的存儲單元時(shí),指針的移動才有意義。才可以將一個(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
使用指針變量對數(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. 本站所有資源如無特殊說明,都需要本地電腦安裝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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度景區(qū)景點(diǎn)精細(xì)化保潔服務(wù)協(xié)議
- 二零二五年度二手車轉(zhuǎn)讓及過戶手續(xù)協(xié)議
- 二零二五年度新型小區(qū)門衛(wèi)管理及應(yīng)急預(yù)案合同
- 2025年度綠色節(jié)能庫房租賃合同
- 2025年度高新技術(shù)企業(yè)員工勞動合同解除終止協(xié)議書
- 2025年度物業(yè)服務(wù)合同主體變更協(xié)議范本
- 二零二五年度大數(shù)據(jù)服務(wù)股權(quán)投資與轉(zhuǎn)讓協(xié)議
- 二零二五年度冷凍庫租賃及冷鏈物流配送中心建設(shè)合同
- 二零二五年度離婚協(xié)議中財(cái)產(chǎn)分割執(zhí)行監(jiān)督補(bǔ)充協(xié)議
- 蘇武牧羊傳紅色故事觀后感
- 汽車修理常用配件信息公示
- 同濟(jì)大學(xué)信紙
- 門式鋼架廠房設(shè)計(jì)
- 口腔模型的灌制-醫(yī)學(xué)課件
- 煤礦班組建設(shè)實(shí)施方案
- (完整word版)新《中華頌》朗誦稿
- 糖尿病健康教育及飲食指導(dǎo)
- PFMEA模板完整版文檔
- 三無曲線(有緩)繩正法撥道自動計(jì)算表
- 教學(xué)能力比賽決賽 《英語》教案
- 《母雞》課件 王崧舟 千課萬人 (圖片版不可編輯)
評論
0/150
提交評論