版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第15講二維數(shù)組與指針指針與二維數(shù)組2#define
M
2#define
N
3…intb[M][N];兩種觀點:看成一個一維數(shù)組看成數(shù)組的數(shù)組將二維數(shù)組看成一個一維數(shù)組元素int
b[M][N];二維數(shù)組b相當(dāng)于一個有6個的一維數(shù)組若有int
*p=&b[0][0];或p=b[0];(總之是列地址)b[i][j]相對于數(shù)組起始地址的偏移量為i*N+j則p[i*N+j]或*(p+i*N+j)表示每一個數(shù)組元素。b[0][0]b[0][1]b[0][2]b[1][0]b[1][1]b[1][2]p3P[0]P[1]P[2]P[3]P[4]P[5]填空題:求二維數(shù)組元素的和}0][0]for
(
i=0
;i<3;i++)for(j=0;
j<4;
j++){sum+=p[
i*3+j
];}printf(“sum=%4d",sum);a[0][0]a[0][1]a[0][2]a[0][3]a[1][0]a[1][1]……P[5]……P[0]P[1]P[2]P[3]P[4]#include
<stdio.h>void
main(){ int
a[3][4]={1,3,5,7,9,11,13,17,19p,21,23};int
i,j,sum=0,*p=
a[0]或&a[
;45#include
<stdio.h>void
main(){ int
a[3][4]={1,3,5,7,9,11,13,17,19,21,23};}}填空:輸出二維數(shù)組元素的值a[0][0]a[0][1]a[0][2]a[0][3]a[1][0]a[1][1]……p135791113輸出結(jié)果:1357911131517
19
21
23int
*p=
a[0]或&a[0][0]
;for
( ;
p<a[0]+12
;p++){ if
((p-a[0]
)%4==0)printf("\n");printf("%4d",
*p
);6將二維數(shù)組看成數(shù)組的數(shù)組行地址b+0b+1bb[0]*(b+0)b[1]*(b+1)將二維數(shù)組的每一行看成一維數(shù)組列地址b[0]+0
b[0]+1
b[0]+2一維數(shù)組b[0]
b[0][0]
b[0][1]
b[0][2]*(b[0]+0)
*(b[0]+1)
*(b[0]+2)列地址
b[1]+0
b[1]+1
b[1]+2一維數(shù)組b[1]
b[1][0]
b[1][1]
b[1][2]*(b[1]+0)
*(b[1]+1)
*(b[1]+2)再
將
二
維
數(shù)
組
b
看
成
由b[0],b[1]兩個元素組成的一維數(shù)組,注意:b[0],b[1]存放的是每行的首地址指針與二維數(shù)組行地址b+0b+1一維數(shù)組bbb[1]*(b+1)b[0]*(b+0)列地址b[0]+0*(b+0)+0b[0]+1*(b+0)+1b[0]+2*(b+0)+2一維數(shù)組b[0]b[1]+0*(b+1)+0b[1]+1*(b+1)+1b[1]+2*(b+1)+2列地址b[1][0]*(*(b+1)+0)b[1][1]*(*(b+1)+1)b[1][2]*(*(b+1)+2)b[0][0]*(*(b+0)+0)b[0][1]*(*(b+0)+1)b[0][2]*(*(b+0)+2)一維數(shù)組b[1]7指針與二維數(shù)組8b代表二維數(shù)組的首地址,指向第0行的首地址(行地址)b+i指向第i行的首地址(行地址)*(b+i)或b[i]代表第i行第0列的地址(列地址)*(b+i)+j
或b[i]+j代表第i行第j列的地址(列地址)*(*(b+i)+j)或b[i][j]代表第i行第j列的元素(數(shù)組元素)用數(shù)組名引用二維數(shù)組元素元素b[i][j]的幾種等價的引用方式b[i][j]*(b[i]+j)*(*(b+i)+j)(*(b+i))[j]如何用指針變量引用二維數(shù)組元素?9二維數(shù)組與指針10用指針指向二維數(shù)組,有兩種指針:列指針,這種指針指向二維數(shù)組的每一個元素,它每加1,指向二維數(shù)組的下一個數(shù)組元素。行指針,這種指針指向二維數(shù)組的行,它每加1,指向二維數(shù)組的下一行。上邊兩種指針分別對應(yīng)著對二維數(shù)組的兩種看法。二維數(shù)組的行指針行指針指向二維數(shù)組的行定義格式
:類型
(*行指針名)
[常量N];要用p指向數(shù)組b,如何初始化?p=b(或p=&b[0]);/*用行地址初始化*/11p++的含義是?例:int(*
p指)向[b3[]1;],即指向下一行的開始位含義:定義置一。個指針變量p,用于指向一行(每行如有何3用個P元引素用)b中每一個數(shù)據(jù)元素?p[i][j]*(p[i]+j)*(*(p+i)+j)(*(p+i))[j]12<string.h>i,
pos,findFlag
=
0;x[10];#includemain(){intcharcharweekDay[7][10]
=
{"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};char
(*p)[10]
=weekDay;printf("Please
enter
a
string:");scanf("%s",
x);for
(i=0;
i<7
&&
!findFlag;
i++){if
(strcmp(x,
*(p+i))
==
0){pos
=
i;findFlag
=
1;}}if
(findFlag)printf("%s
is
%d\n",
x,
pos);elseprintf("Not
found!\n");}讀程序weekDay[0]weekDay[1]weekDay[2]weekDay[3]weekDay[4]weekDay[5]weekDay[6]Sunday\0Monday\0Tuesday\0Wednesday\0Thursday\0Friday\0Saturday\0p13#include
<stdio.h>void
ave(float
(*p)[3],int
n);void
main(){int
num;float
score[5][3]={{65,98,76},{78,69,87},score:");scanf("%d",&num);ave(score,
num);getch();}voidave(float(*p)[3],int
n)/*對p指向的二維數(shù)組中第n行的數(shù)據(jù)求和*/{ int
i;float
average=0;printf("the
average
score
of
NO.%d
are:",n);for(i=0;i<3;i++) /*對第n行的數(shù)據(jù)求和*/average=*(*(p+n)+i)+average;average=average/3;printf("%5.2f",average);}例題8-1{67,68,81},{80,65,98},{64,83,79}};printf("please
inputnumber
of
s?t有ud沒ent有,其I
w它ill寫te法ll
?youhisaverage把第n行的數(shù)據(jù)當(dāng)成一個一維數(shù)組,問題變成求一維數(shù)組元素的和。14#include<stdio.h>float
*find(float(*pionter)[4],int
n);void
main(){
float
score[4][4]={{60,70,80,90},{56,89,34,45},{34,23,56,45}};float
*p;int
i,m;printf("Enter
the
number
to
be
found:");scanf("%d",&m);printf("the
score
of
NO.%d
are:\n",m);p=find(score,m); /*調(diào)用函數(shù)在score中找第m個學(xué)生所在行的首地址*/for(i=0;i<4;i++)printf("%5.2f\t",*(p+i));}float
*find(float(*pointer)[4],int
n){/*函數(shù)功能:在指針指向的二維數(shù)據(jù)中找第n行的首地址,并返回*/float
*pt;pt=*(pointer+n);return(pt);}例題8-9返回指針值的函數(shù)15#include
<stdio.h>for(i=0;i<5;i++){
p=a+i;printf(“%s\n”,*p);p=a+2;p++;printf("**p=%s\n",*p);}例8-2
讀程序a[0]a[1]a[2]a[3]a[4]abcde\0abc\0abcd\0ab\0abcdef\0pchar
(*p)[10];
/*行指針,其變
int
i;bcd","ab","abcdef"};化是行方向的地址變化*//*指向第i行*//*注意:*p仍然是地址,該語句輸a
入從這個地址開始到\0}結(jié)束的那一串字符*/void
main(){ char
a[5][10]={"abcde","abc","a
?輸出結(jié)果:abcdeabcabcdababcdefab16#include
<stdio.h>char
**p;int
i;for(i=0;i<5;i++){
p=a+i;}p=a+2;p++;printf("**p=%s\n",*p);}例8-2讀程序a[0]a[1]a[2]a[3]a[4]abcde\0abc\0abcd\0ab\0abcdef\0pvoid
main(){
char
*a[5]={"abcde","abc","abc/*定義一維指針數(shù)組a,a有五個數(shù)組元/*二級指針*//*
p指向指針數(shù)組a的每d","ab","abcdef"};素,每個元素存字符串的首地址*/一個元素*/printf(“%s\n”,*p);/*注意:*p與p[i]等價,仍然是地址*/a輸出結(jié)果:abcdeabcabcdababcdefab17二、指針數(shù)組元素均為指針類型數(shù)據(jù)的數(shù)組,稱為指針數(shù)組定義形式為:類型關(guān)鍵字
*數(shù)組名[數(shù)組長度];例如含義:pStr[5]*char注意與行指針的區(qū)別:char
*pStr[5c]h;ar(*pStr)[5];18例#include
<stdio.h>void
main(){int
i;char
*ptr[]={"Pascal","Basic","Fortran","Java","Visual
C"};char
**p;
p
=
ptr;for
(i=0;
i<5;
i++){printf("%s\n",
*p);p++;}}ptr[0]Pascalptr[1]ptr[2]ptr[3]BasicFortranJavaptr指針數(shù)組字符串Visual
Cptr[4]&Ptr[0]pp例:字符串排序方法一:用二維數(shù)組解決19char
str[N][10]
=
{"Pascal","Basic","Fortran","Java","Visual
C"};for
(i=0;
i<N-1;
i++)
/*交換法排序*/for
(j=i+1;j<N;j++){
if
(strcmp(str[j],
str[i])
<
0){strcpy(temp,str[i]);strcpy(str[i],str[j]);strcpy(str[j],temp);}}方法1排序前后str[0]str
[1]str
[2]str
[3]str
[4]Pascal\0\0\0\0Basic\0\0\0\0\0Fortran\0\0\0Java\0\0\0\0\0\0VisualC\0\0namenamenamenamenameB
asic\0\0\0\0\0F
ortran\0\0\0Java\0\0\0\0\0\0Pascal\0\0\0\0VisualC\0\0str[0]str[1]str[2]s
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 鉆孔樁鋼護筒打設(shè)變形原因分析及處理措施
- 鋼吊箱圍堰涌水原因分析及處理措施
- 青島版小學(xué)五年級信息技術(shù)備課教案
- 2024年機電行業(yè)現(xiàn)狀分析:一季度我國機電產(chǎn)品出口額同比增長3.3%
- 2024-2025學(xué)年小學(xué)科學(xué)三年級上冊粵教粵科版(2017秋)教學(xué)設(shè)計合集
- 2024年呼吸內(nèi)科工作計劃
- 2024年物業(yè)管理公司管理制度
- 2024-2025學(xué)年初中信息技術(shù)(信息科技)七年級下冊(2020)閩教版(2020)教學(xué)設(shè)計合集
- 義務(wù)教育英語新課標課程標準2022年版考試真題及答案A卷
- 第35個國際減災(zāi)日活動方案(3篇)
- 2024年醫(yī)院勞動合同模板(六篇)
- 【歷史】七年級上冊期中復(fù)習(xí)(1-15課)(復(fù)習(xí)課件) 2024-2025學(xué)年七年級歷史上冊(統(tǒng)編版2024)
- 感術(shù)行動專項考核試題及答案
- 2024年成人高考成考(高起專)語文試題與參考答案
- 白酒廠房租賃合同范本
- 第二單元測試卷-2024-2025學(xué)年統(tǒng)編版語文四年級上冊
- 江蘇省南京市2024-2025學(xué)年高三9月學(xué)情調(diào)研數(shù)學(xué)試卷(原卷版)
- 2024小學(xué)數(shù)學(xué)義務(wù)教育新課程標準(2022版)必考題庫附含答案
- 《中國慢性阻塞性肺疾病基層診療與管理指南(2024 年)》全文學(xué)習(xí)3
- 2024年廣東省廣州市中考英語試卷附答案
- 土地復(fù)墾資金管理辦法
評論
0/150
提交評論