![通過指針引用數(shù)組 4.3.4-主講金紅 內(nèi)蒙古建筑職業(yè)技術(shù)_第1頁](http://file4.renrendoc.com/view9/M00/1D/25/wKhkGWdgLOiARAUTAAHD1obZEhk540.jpg)
![通過指針引用數(shù)組 4.3.4-主講金紅 內(nèi)蒙古建筑職業(yè)技術(shù)_第2頁](http://file4.renrendoc.com/view9/M00/1D/25/wKhkGWdgLOiARAUTAAHD1obZEhk5402.jpg)
![通過指針引用數(shù)組 4.3.4-主講金紅 內(nèi)蒙古建筑職業(yè)技術(shù)_第3頁](http://file4.renrendoc.com/view9/M00/1D/25/wKhkGWdgLOiARAUTAAHD1obZEhk5403.jpg)
![通過指針引用數(shù)組 4.3.4-主講金紅 內(nèi)蒙古建筑職業(yè)技術(shù)_第4頁](http://file4.renrendoc.com/view9/M00/1D/25/wKhkGWdgLOiARAUTAAHD1obZEhk5404.jpg)
![通過指針引用數(shù)組 4.3.4-主講金紅 內(nèi)蒙古建筑職業(yè)技術(shù)_第5頁](http://file4.renrendoc.com/view9/M00/1D/25/wKhkGWdgLOiARAUTAAHD1obZEhk5405.jpg)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
通過指針引用數(shù)組主講教師:金紅內(nèi)蒙古建筑職業(yè)技術(shù)學(xué)院4.3.4CONTENTS目錄PART01數(shù)組元素的指針PART02在引用數(shù)組元素時(shí)指針的運(yùn)算PART03通過指針引用數(shù)組元素01數(shù)組元素的指針數(shù)組元素的指針p&a[0]→1a[0]35791113151719inta[10]={1,3,5,7,9,11,13,15,17,19}; int*p; p=&a[0];
所謂數(shù)組元素的指針就是數(shù)組元素的地址??梢杂靡粋€(gè)指針變量指向一個(gè)數(shù)組元素。數(shù)組元素的指針
引用數(shù)組元素可以用下標(biāo)法,也可以用指針法,即通過指向數(shù)組元素的指針找到所需的元素。
在定義指針變量時(shí)可以對它初始化:p=&a[0];p=a;≡int*p;p=&a[0]; int*p=&a[0];≡≡int*p=a;02在引用數(shù)組元素時(shí)指針的運(yùn)算在引用數(shù)組元素時(shí)指針的運(yùn)算注意
執(zhí)行p+1時(shí)并不是將p的值(地址)簡單地加1,而是根據(jù)定義的基類型加上一個(gè)數(shù)組元素所占用的字節(jié)數(shù)。在指針已指向一個(gè)數(shù)組元素時(shí),可以對指針進(jìn)行以下運(yùn)算:加一個(gè)整數(shù)(用+或+=),如p+1,表示指向同一數(shù)組中的下一個(gè)元素;減一個(gè)整數(shù)(用-或-=),如p-1,表示指向同一數(shù)組中的上一個(gè)元素;自加運(yùn)算,如p++,++p;自減運(yùn)算,如p--,--p。03通過指針引用數(shù)組元素通過指針引用數(shù)組元素
有一個(gè)整型數(shù)組a,有10個(gè)元素,要求輸出數(shù)組中的全部元素。#include<stdio.h>intmain(){ inta[10]; inti; printf("pleaseenter10integernumbers:"); for(i=0;i<10;i++) scanf("%d",&a[i]); for(i=0;i<10;i++) printf("%d",a[i]); //數(shù)組元素用數(shù)組名和下標(biāo)表示
printf("%\n"); return0;}①
下標(biāo)法#include<stdio.h>intmain(){ inta[10]; inti; printf("pleaseenter10integernumbers:"); for(i=0;i<10;i++) scanf("%d",&a[i]); for(i=0;i<10;i++) printf("%d",*(a+i));
printf("\n"); return0;}②
通過數(shù)組名計(jì)算數(shù)組元素地址,找出元素的值例通過指針引用數(shù)組元素#include<stdio.h>intmain(){ inta[10]; int*p,i; printf("pleaseenter10integernumbers:"); for(i=0;i<10;i++) scanf("%d",&a[i]); for(p=a;p<(a+10);p++) printf("%d",*p);
//用指針指向當(dāng)前的數(shù)組元素
printf("\n"); return0;}③
用指針變量指向數(shù)組元素
第(1)和第(2)種方法執(zhí)行效率是相同的。C編譯系統(tǒng)是將a[i]轉(zhuǎn)換為*(a+i)處理的,即先計(jì)算元素地址。因此用第(1)和第(2)種方法找數(shù)組元素費(fèi)時(shí)較多。
第(3)種方法比第(1)、第(2)種方法快,用指針變量直接指向元素,不必每次都重新計(jì)算地址,像p++這樣的自加操作是比較快的。這種有規(guī)律地改變地址值(p++)能大大提高執(zhí)行效率。
有一個(gè)整型數(shù)組a,有10個(gè)元素,要求輸出數(shù)組中的全部元素。例通過指針引用數(shù)組元素#include<stdio.h>intmain(){ int*p,i,a[10]; p=a; //p指向a[0] ①
printf("pleaseenter10integernumbers:"); for(i=0;i<10;i++) scanf("%d",p++); //輸入10個(gè)整數(shù)給a[0]~a[9]
for(i=0;i<10;i++,p++) printf("%d",*p);
//想輸出a[0]~a[9] ②
printf("\n"); return0;}#include<stdio.h>intmain(){ inti,a[10],*p=a; //p的初值是a,p指向a[0]
printf("pleaseenter10integernumbers:"); for(i=0;i<10;i++) scanf("%d",p++);
p=a;
//重新使p指向a[0]
for(i=0;i<10;i++,p++) printf("%d",*p); printf("\n"); return0;}
通過指針變量輸出整型數(shù)組a的10個(gè)元素。例通過指針引用數(shù)組元素
從上例可以看到,雖然定義數(shù)組時(shí)指定它包含10個(gè)元素,并用指針變量p指向某一數(shù)組元素,但是實(shí)際上指針變量p可以指向數(shù)組以后的存儲(chǔ)單元,結(jié)果不可預(yù)期,應(yīng)避免出現(xiàn)這樣的情況。
指向數(shù)組元素的指針變量也可以帶下標(biāo),如p[i]。p[i]被處理成*(p+i),如果p是指向一個(gè)整型數(shù)組元素a[0],則p[i]代表a[i]。但是必須弄清楚p的當(dāng)前值是什么?如果當(dāng)前p指向a[3],則p[2]并不代表a[2],而是a[3+2],即a[5]。通過指針引用數(shù)組元素
利用指針引用數(shù)組元素,比較方便靈活,有不少技巧。請分析下面幾種情況:
設(shè)p開始時(shí)指向數(shù)組a的首元素(即p=a):
1p++;
//使p指向下一元素a[1]*p;
//得到下一個(gè)元素a[1]的值2*p++;
/*由于++和*同優(yōu)先級,結(jié)合方向自右而左,因此它等價(jià)于*(p++)。先引用p的值,實(shí)現(xiàn)*p的運(yùn)算,然后再使p自增1*/3*(p++); //先取*p值,然后使p加1*(++p);
//先使p加1,再取*p4++(*p); /*表示p所指向的元素值加1,如果p=a,則相當(dāng)于++a[0],若a[0]的值為3,則a[0]的值為4。注意:是元素a[0]的值加1,而不是指針p的值加1*/5如果p當(dāng)前指向a數(shù)組中第i
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(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年二手高性能跑車交易協(xié)議樣本
- 2025年農(nóng)產(chǎn)品供應(yīng)鏈融資信貸協(xié)議
- 2025年企業(yè)合并與分立勞動(dòng)關(guān)系轉(zhuǎn)移協(xié)議
- 2025年個(gè)人借款合同擔(dān)保協(xié)議規(guī)范文本
- 2025年策劃合伙人股權(quán)分配協(xié)議書格式
- 2025年康復(fù)中心策劃工作人員協(xié)議書
- 2025年倉儲(chǔ)管理與存貨合同協(xié)議
- 2025年農(nóng)村居民住房出售合同
- 2025年互聯(lián)網(wǎng)企業(yè)兼職會(huì)計(jì)人員招聘協(xié)議
- 2025年企業(yè)租用私家車合同模板
- 【高考作文指導(dǎo)】用思辨來寫現(xiàn)象類作文(共39張PPT)
- GB/T 4214.1-2017家用和類似用途電器噪聲測試方法通用要求
- GB/T 11822-2000科學(xué)技術(shù)檔案案卷構(gòu)成的一般要求
- 水輪發(fā)電機(jī)組及其附屬設(shè)備招標(biāo)文件
- 壓力管道基本知識課件
- 讀李玫瑾教授《心理撫養(yǎng)》有感
- 小學(xué)英語 國際音標(biāo) 練習(xí)及答案
- 優(yōu)秀班主任經(jīng)驗(yàn)交流課件-班主任經(jīng)驗(yàn)交流課件
- HP-DL380-Gen10-服務(wù)器用戶手冊
- 2023年廣州金融控股集團(tuán)有限公司招聘筆試題庫及答案解析
- YB∕T 105-2014 冶金石灰物理檢驗(yàn)方法
評論
0/150
提交評論