版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
指針變量與數(shù)組指針變量與數(shù)組指針與一維數(shù)組指針的運算字符指針與字符串數(shù)組中的每個元素都可以通過下標唯一確定,即通過下標可以訪問(操作)數(shù)組中的元素。在C語言中,凡是可以通過數(shù)組下標方式完成的訪問(操作)均可以通過指針方式實現(xiàn)。C語言規(guī)定:數(shù)組名就是數(shù)組的首地址常量,即int
a[10];a==
&a[0]C語言系統(tǒng)內(nèi)部處理機制,指針方式效率高,但不直觀。指針與一維數(shù)組a[6]a[0]a[1]a[2]a[3]a[4]a[5]a[9]memory訪問數(shù)組的兩種方式下標方式inta[10],
*p;p=a;
(等價于
p=&a[0];)使p指向a數(shù)組的第一個元素a[0];a[i],*(a+i),
p[i]
,*(p+i)
等價
。指針方式通過指向數(shù)組元素的指針變量訪問所需元素。int
a[10],*p=&a[0];p++;p=&a[0]p++p++指向數(shù)組元素的指針通過指針引用數(shù)組a[7]a[8]下標法
#include
<stdio.h>intmain(
){ inta[10],
i;for(i=0;i<10;i++)scanf("%d",
&a[i]);printf("\n");for(i=0;i<10;i++)printf("%3d",a[i]);return
0;}例:輸出數(shù)組全部元素。指針法
#include
<stdio.h>intmain(
){int
a[10],
i, *p=a;for(i=0;i<10;i++,p++)scanf(“%d”,
p);printf(“\n”);for(p=a;p<(a+10);
p++)printf(“%3d”,*p
);return
0;}*(a+i)
指針的運算指針的算術(shù)運算指針表達式與整數(shù)的加減運算指針自增自減運算指針的關(guān)系運算同類指針相減強制類型轉(zhuǎn)換運算指針表達式與整數(shù)的加減運算一般形式p+n或 p-n其中:p是任意一個指針表達式,n是任何一種整型表達式。計算規(guī)則表達式
p+n
的值
=
p的值
+
p所指類型長度*n表達式
p-n的值
=
p的值 -
p所指類型長度*n說明:只有當p和p+n或p-n都指向連續(xù)存放的同類型數(shù)據(jù)區(qū)域(數(shù)組)時,指針加、減才有實際意義。C語言規(guī)定:表達式p+n和p-n的類型與p相同。p,ap+1,a+1p+i,a+ia[0]a[1]a[i]a數(shù)組*(p+i)例如:int
a[10],*p,*q;p=a;q=a+6;a[6]p+9,a+9a[9]q=a+6數(shù)組和指針的本質(zhì)不同:數(shù)組名是指針常量,不能改變指針常量的值,a++;a+=2;a=p;
都是非法的。指針p是變量,若p指向數(shù)組的首地址,p+1代表該類型的下一變量的地址。語法后綴:
p++
; p--
;前綴:
++p
; --p
;⑴
進行++p或p++運算后都使p指向下一個數(shù)據(jù)表達式p++的值等于p的原來值;表達式++p的值等于p的新值;⑵取內(nèi)容運算符“
*
”、取地址運算符“
&
”和自增自減運算符都是單目運算符,運算的優(yōu)先級相同,結(jié)合方向都是自右至左
指針自增自減運算......p-3p-2p-1pp+1p+2..................數(shù)組a低地址高地址當兩個指針指向同一個數(shù)組中的元素時,才能進行>、<、>=、<=、!=、==的關(guān)系運算。任何指針p與NULL進行“p==NULL”或“p!=NULL”運算均有意義:判斷指針p
是否指向空。指針的關(guān)系運算只有同類指針進行比較才有意義。指針的關(guān)系運算例:inta[10],
*p;p=&a[4];a[4]
假定指針p和q指向同一個數(shù)組,則:p>
q:p>=q:p指針所指元素位于q所指元素之后時為1,反之為0。p指針所指元
素位于q所指元素之后(或兩指針指向同一元素)時為1,反之為0。p==q:兩指針指向同一元素時為
1,反之為0。p!=q:兩指針不指向同一元素時為
1,反之為0。語法:
指針表達式 關(guān)系運算符 指針表達式==和!=運算符,比較兩個指針表達式是否指向同一個內(nèi)存單元;<、<=、>、>=,比較兩個指針所指內(nèi)存區(qū)域的先后次序。.語法
:p-q說明:同類指針相減時,兩個指針應(yīng)該指向連續(xù)存放的同類數(shù)據(jù)區(qū)域。p-q
的值,等于(p的值-q的值)/所指類型長度,
即p,
q兩個指針之間數(shù)據(jù)元素的個數(shù)。例如:若有
int
a[10]
,*p, *q;p=a;q=&a[5];則
p-q=5,表示p,
q之間數(shù)據(jù)元素的個數(shù)是5。同類指針相減格式:(類型名
*) 指針表達式功能:將指針表達式的值轉(zhuǎn)換成指定類型的指針。例如:int
*p;double d,
*q=&d;p=(int*
)q;強制類型轉(zhuǎn)換運算[例8-3]用指針訪問數(shù)組元素。#include
<stdio.h>intmain(
){inta[10],*pa,
i;for(i=0;i<10;i++)a[i]=i+1;pa=a;for(i=0;i<10;i++,pa++)printf("%d
",*pa);printf("\n");return
0;}不要忘記賦初值字符指針與字符串字符串的表示形式用字符數(shù)組表示,如:intmain(
){ charstring[]=“Ilove
China!”;printf(“%s\n”,string);return
0;}數(shù)組名用字符指針實現(xiàn),如:intmain(
){ char*string=“IloveChina!”;printf(“%s\n”,string);return
0;}把“I
love
China!”的首地址賦給指針變量string特點:字符串的長度不受限制;字符指針指向別處,字符串將失蹤。此字符串不能改變,只能讀取。[例8-5]使用字符指針輸出字符串。#include
<stdio.h>intmain(
){ char*p="C
Language";for(;*p!=′\0′;)putchar(*++p);return
0;}字符指針變量與字符數(shù)組的區(qū)別字符數(shù)組由若干個元素組成,每個元素中放一個字符,而字符指針變量中存放的是字符串的首地址。賦值方式:
char
str[
]=“I
am
aboy!”或:
char
str[20];gets(str);字符指針變量指向字符串首地址。賦值方法三種:char*
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年臨時倉儲設(shè)施租賃及管理服務(wù)合同
- 標準新工程設(shè)計合同樣本
- 2024年多人合伙共盈合同書范本
- 2024年度智能倉庫設(shè)備安裝合同
- 代銷協(xié)議書范例2024
- 全面房屋裝修合同模板集成
- 出口業(yè)務(wù)代理協(xié)議范本
- 2024物流合同范本
- 常見勞務(wù)派遣委托協(xié)議樣本
- 廣州建設(shè)工程裝修施工合同范例
- 雅魯藏布江大拐彎巨型水電站規(guī)劃方案
- 廣西基本醫(yī)療保險門診特殊慢性病申報表
- 城市經(jīng)濟學習題與答案
- 國開成本會計第14章綜合練習試題及答案
- 幼兒園大班科學:《樹葉為什么會變黃》課件
- 1到50帶圈數(shù)字直接復(fù)制
- 鐵路工程施工組織設(shè)計(施工方案)編制分類
- 幼兒園中班數(shù)學《有趣的圖形》課件
- 《規(guī)劃每一天》教案2021
- 草莓創(chuàng)意主題實用框架模板ppt
- 山大口腔頜面外科學課件第5章 口腔種植外科-1概論、口腔種植的生物學基礎(chǔ)
評論
0/150
提交評論