




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
指針是C語言中的一個重要概念。掌握指針的用
法,可使程序簡潔、高效、靈活,但并不難學(xué)。
為了了解什么是指針,先看一個小故事
地下工作者阿金接到上級指令,要去尋找打開
密電碼的密鑰,這是一個整數(shù)。幾經(jīng)周折,才探知
如下線索,密鑰藏在一棟三年前就被貼上封條的小
樓中。一個風(fēng)雨交加的夜晚,阿金潛入了小樓,房
間很多,不知該進(jìn)哪一間,正在一籌莫展之際,忽
然走廊上的電話鈴聲響起。藝高人膽大,阿金毫不
遲疑,抓起聽筒,一個陌生人說:“去打開211房
間,那里有線索”。阿金疾步上樓,打開211房間,
用電筒一照,只見桌上赫然6個大字:地址1000。
阿金眼睛一亮,迅速找到1000房間,取出重要數(shù)據(jù)
66,完成了任務(wù)。2
我們畫出下圖
pI---------
1000???66???
2111000
1、數(shù)據(jù)藏在一個內(nèi)存地址單元中,地址是1000。
2、地址1000又由P單元所指認(rèn),P單元的地址為211。
3、66的直接地址是1000;66的間接地址是211;211中
存的是直接地址1000。
4、稱P為指針變量,1000是指針變量的值,實(shí)際上是有
用數(shù)據(jù)藏在存儲器中的地址。3
指針變量——用來存放另一變量地址的變量
變量的指針就是變量的地址。
1、指針的概念
指針是一種特殊的變量,特殊性表現(xiàn)在類型和值上。
從變量講,指針也具有變量的三個要素:
>(1)變量名,這與一般變量取名相同,由英文字符開始。
>(2)指針變量的類型,是指針?biāo)赶虻淖兞康念愋?,而?/p>
是自身的類型。
>(3)指針的值是某個變量的內(nèi)存地址。
從上面的概念可知,指針本身類型是int型,因?yàn)槿魏蝺?nèi)存地
址都是整型的。但是指針變量的類型卻定義成它所指向的
變量的類型。
2、指針的定義(說明,先說明后引用)
例如:
int*q;//定義p,q為指向整數(shù)類型變量的指針
float*point;//定義point為指向float型變量的指針
double*pd;//定義pd為指向double型數(shù)組的指針
intrpa)[10];//定義pa為指向int型數(shù)組的指針
intCpu)0;//定義pu為指向int型函數(shù)的指針
int**qq;//定義qq為指向int型指針的指針
還有指向結(jié)構(gòu)、聯(lián)合的指針,后面再介紹
3、指針賦值
例
intakey;//定義一個整型變量akey
int*p,*q;//定義P,q為指向整型變量的指針變量
akey=66;//將變量a的地址賦給p,這時見圖1
q=P;//將P的值賦給q,見圖2
p
&a66
圖1
&P
P變量的地址a變量的地址
圖1的說明:將a變量的地址賦給指針p,意味著讓指針
p指向a
6
p
/&a------------166
~~Sip
/圖2
q=p;I
&q
圖2的說明:當(dāng)著執(zhí)行q=p;之后,p中所存的a變量的
地址值,也就被放到q變量中,意味著讓指
針q也指向a
7
〃指針1.C
#include<stdio.h>//預(yù)編譯命令
voidmain()〃主函數(shù)
(//函數(shù)體開始
inta[5]={0,l,2,3,4};〃定義數(shù)組,賦初值
int*pl,*p2;//定義指針變量
pl=&a[l];//賦值給指針變量,讓pl指向a[l]
p2=&a[2];//賦值給指針變量,讓pl指向a[2]
printf(na[l]=%d;a[2]=%d\nfVpl,*p2);〃輸出a[l]和a[2]的值
}
說明:見圖
01234
&a[0]&a[l]&a[2]&a[3]&a[4]
&a[l]][&a[2]
&pl&p2▼
pl和p2分別指向a[l]閨2];這里
>&——取地址運(yùn)算符
>*——指針運(yùn)算符(間接訪問運(yùn)算符)
>*pl——間接訪問pl所指向的內(nèi)存單元,當(dāng)然是輸出a[l]的值
>*p2——間接訪問p2所指向的內(nèi)存單元,當(dāng)然是輸出a[2]的值
4、向指針?biāo)赶虻膬?nèi)存單元賦值
//指針2.c
#include<stdio.h>//預(yù)編譯命令
voidmainQ〃主函數(shù)
〃函數(shù)體開始
intakey,b;〃定義整型變量
int*p,*q;〃定義指針變量
akey=66;〃賦值給變量akey
p=&akey;〃賦值給指針變量p,讓p指向變量akey
q=&b;〃賦值給指針變量q,讓q指向變量b
*q=*p;〃將P所指向的akey的值賦給q所指向的變量b
printf(Mb=%d\nn,b);〃輸出b的值
printf("*q=%d\n",*q);〃輸出b的值
卜〃函數(shù)體結(jié)束
10
p
&b
11
5、指針與數(shù)組
先看一個程序
//指針3.c
#include<stdio.h>〃預(yù)編譯命令
voidmain()〃主函數(shù)
//函數(shù)體開始
inta[5]={l,3,5,7,9};//定義數(shù)組,賦初值
int*p;〃定義指針變量
inti;//定義整型變量
P=a;//賦值給指針變量,讓p指向a數(shù)組
for(i=0;i<5;i=i+l)
{〃循環(huán)體開始
printf("a[%d]=%d\n"J,*p);//輸出a數(shù)組元素的值
P=P+1;〃指針變量加1
}//循環(huán)體結(jié)束
//函數(shù)體結(jié)束
}投
說明
>(l)p=a;這里數(shù)組名作為數(shù)組的起始地址,即a[0]的地址。
因此p=a等效于p=&a[O];
>(2)p=p+l;如p指向a[0],貝ljp=p+l之后,p指向a[l]
>(3)如果p=a等效于p=&a[O];
做下面的實(shí)驗(yàn)
//指針4.c
#include<stdio.h>〃預(yù)編譯命令
voidmain()〃主函數(shù)
//函數(shù)體開始
inta[5]={l,3,5,7,9};//定義數(shù)組,賦初值
int*p;〃定義指針變量
inti=0;//定義整型變量,賦初值
for(p=a;p<a+5;p=p+1)//賦值給指針變量,讓p指向a數(shù)組
〃循環(huán)體開始
printf(na[%d]=%d\nn*p);〃輸出a數(shù)組元素的值
i=i+l;〃讓加1
}〃循環(huán)體結(jié)束
}//函數(shù)體結(jié)束
14
數(shù)組名是一個常量指針,指向該數(shù)組的首地址,例
//指針5.c
#include<stdio.h>
voidmain()
char*p;〃定義指向字符類型的指針變量p
staticchars[]="abcdefgh”;//定義字符數(shù)組,并賦值
p=s;〃數(shù)組名是一個常量指針,
〃它指向該數(shù)組首地址,
while(*p!=,\(F)//當(dāng)p所指向的數(shù)組元素不為八(F時
{
p=p+l;〃讓指針加1
}
printf(“字串長度為%d\n”,p.s);〃輸出字串長
}
15
012345678
abCd°fgh\0
sP
圖中數(shù)組的首地址是s[0]的地址,即&s[0]。s可看
作是指向s[0]的指針。s是不會動的,是常量指
針。
數(shù)組名是一個常量指針,指向該數(shù)組的首地址,例
//指針6.c
#include<stdio.h>//預(yù)編譯命令
voidmain()〃主函數(shù)
//函數(shù)體開始
staticcharshuzi[]="987654321”;〃定義數(shù)組,
〃賦初值為數(shù)字字符串
char*p=&shuzi[8];//讓指針p指向shuzi[8]元素,
〃該處是字符
do〃直到型循環(huán)
〃循
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年中國氫氧化鋰行業(yè)十三五規(guī)劃與投資風(fēng)險評估報告
- 科技公司如何利用先進(jìn)的網(wǎng)絡(luò)安全產(chǎn)品提升競爭力
- 2025-2030年中國服裝零售市場經(jīng)營模式及投資競爭力分析報告
- 2025-2030年中國新型隔熱浮法玻璃行業(yè)十三五規(guī)劃及發(fā)展盈利分析報告
- 數(shù)學(xué)組課外活動組織計劃
- 7 鹿角和鹿腿 教學(xué)設(shè)計-2023-2024學(xué)年統(tǒng)編版語文三年級下冊
- 4 《喜看稻菽千重浪》《心有一團(tuán)火溫暖眾人心》《“探界者”鐘揚(yáng)》群文閱讀教學(xué)設(shè)計 2024-2025學(xué)年統(tǒng)編版高中語文必修上冊
- 2023-2024學(xué)年高中信息技術(shù)選擇性必修1(浙教版2019)數(shù)據(jù)與數(shù)據(jù)結(jié)構(gòu)-教學(xué)設(shè)計-3.3-棧
- 9 小水滴的訴說2023-2024學(xué)年二年級下冊道德與法治同步教學(xué)設(shè)計(統(tǒng)編版)
- 十歲生日答謝宴致辭發(fā)言稿
- 醇基燃料突發(fā)事故應(yīng)急預(yù)案
- 情侶自愿轉(zhuǎn)賬贈與協(xié)議書范本
- DB14-T 3043-2024 黃土丘陵溝壑區(qū)水土流失綜合治理技術(shù)規(guī)范
- 青島西海岸新區(qū)2025中考自主招生英語試卷試題(含答案詳解)
- 《氣象學(xué)與氣候?qū)W》全書電子教案B
- 生產(chǎn)設(shè)備更新和技術(shù)改造項(xiàng)目資金申請報告-超長期國債
- 江西省“振興杯”信息通信網(wǎng)絡(luò)運(yùn)行管理員競賽考試題庫-上(單選題)
- DLT 5756-2017 額定電壓35kV(Um=40.5kV)及以下冷縮式電纜附件安裝規(guī)程
- 2023高考數(shù)學(xué)藝考生一輪復(fù)習(xí)講義(學(xué)生版)
- 2024年江蘇經(jīng)貿(mào)職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測試題庫含答案
- 2024年連云港專業(yè)技術(shù)人員繼續(xù)教育《飲食、運(yùn)動和健康的關(guān)系》92分(試卷)
評論
0/150
提交評論