




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
9數(shù)組在C語(yǔ)言中,除了前面介紹的基本類型之外,還有另外一些數(shù)據(jù)類型---構(gòu)造類型。數(shù)組就屬于構(gòu)造類型中的一種。數(shù)組是有序數(shù)據(jù)的集合。數(shù)組中的每一個(gè)元素都屬于同一個(gè)數(shù)據(jù)類型。用一個(gè)的數(shù)組名和下標(biāo)來唯一的確定數(shù)組中的元素??梢杂脕斫鉀Q所論數(shù)據(jù)不僅與其取值狀況有關(guān),還與其所在位置有關(guān)(有序性)的問題。數(shù)組特點(diǎn):排列有序、取名同源、彼此 、聯(lián)
組1為什么用數(shù)組成績(jī)例:要輸入班上60位同學(xué)的數(shù)定義變量:int
math_1,
math_2,
math_3,
math_4,…,math_60;intEng_1,Eng_2,….,Eng_59,Eng_60;采用數(shù)組:int
math[60];intEng[60];如果要輸出第一位同學(xué)的數(shù)學(xué)成績(jī)printf(“%d”,math[0]);2一維數(shù)組的定義和33一維數(shù)組的定義一般形式:類型說明符數(shù)組名[常量表達(dá)式];例如:int
a[10];說明:數(shù)組名定名規(guī)則和變量名相同,遵循標(biāo)識(shí)符定名規(guī)則;數(shù)組名后面是用方括號(hào)括起來的常量表達(dá)式;定義表達(dá)式的常量表達(dá)式表示元素的個(gè)數(shù),即數(shù)組長(zhǎng)度;定義表達(dá)式中的常量表達(dá)式可以是常量和符號(hào)常量,但不能是變量,即不允許進(jìn)行動(dòng)態(tài)定義。下面定義是錯(cuò)的:int n;scanf(“%d”,
&n);inta[n];a[0]
a[1]a[2]
a[3]
a[4]
a[5]a[6]
a[7]
a[8]
a[9]120460939801150一維數(shù)組元素的數(shù)組元素的
形式:
數(shù)組名[下標(biāo)]以int
a[n]定義的數(shù)組的下標(biāo)從0開始,n-1結(jié)束整個(gè)數(shù)組的元素每次可
一個(gè)數(shù)組元素,不能一次一個(gè)數(shù)組元素就如同一個(gè)簡(jiǎn)單變量下標(biāo)可以是整型常量或整型表達(dá)式常量和表達(dá)式作下標(biāo)變量作下標(biāo)數(shù)組元素做下標(biāo)a[0]=
a[5]
+
a[7]
-
a[2*3];a[i]=
a[i]
+1;a[
a[0]
]
=
a[1]55一維數(shù)組元素的[例]
#include
<stdio.h>main(){int
i,a[10];for(i=0;i<=9;i++)a[i]=i;for
(i=9;
i>=0;i--)printf("%d",a[i]);}987654321066一維數(shù)組元素的說明:一個(gè)數(shù)組元素實(shí)質(zhì)是一個(gè)變量名,代表一個(gè)內(nèi)存單元,一個(gè)數(shù)單元組占有一串連續(xù)的如:int
arr[4]={5};arr[0]=arr[1]+2;數(shù)組不能整體如:int
arr[10]=0,arry[10];arry=arr;單元下標(biāo)表達(dá)式的值必須是整數(shù),下標(biāo)表達(dá)值的下限為0編譯時(shí)不會(huì)檢查下標(biāo)越界,一旦越界可能會(huì)破壞其他中的數(shù)據(jù),甚至程序代碼7一維數(shù)組的初始化8定義數(shù)組時(shí),系統(tǒng)開辟一串連續(xù)的內(nèi)存單元,但無確定值。因此在使用前必須賦值初始化:在定義時(shí)給各個(gè)元素賦值方法:從數(shù)組的第一個(gè)元素開始依次給出初始值表;表中各值之間用逗號(hào)分開,并用一對(duì)大括號(hào)括起來。例:int
a[10]={0,1,2,3,4,5,6,7,8,9};只給一部分元素賦初值,后面的元素自動(dòng)補(bǔ)0int
a[10]={0,1,2,3,4};等價(jià)于
int
a[10]={0,1,2,3,4,0,0,0,0,0,0};9一維數(shù)據(jù)的初始化欲使一個(gè)數(shù)組中全部元素初值為0,可寫成:int a[10]={0,0,0,0,0,0,0,0,0,0};或
int a[10]={0};char
c[5]={‘\0’};在對(duì)全部數(shù)組元素賦初值時(shí),可以不指定數(shù)組長(zhǎng)度int a[]={0,1,2,3,4,5};等價(jià)于
inta[6]={0,1,2,3,4,5};例:inta[10]={1*10};printf(“%d”,a[2]);結(jié)果為?一維數(shù)組的初始化如果在定義時(shí)沒有賦值,那在后面的程序段只能依次為每個(gè)元素賦值a[10]={0};[例]
#include
<stdio.h>main(){int
i,a[10];printf(“%d”,a[0]);}for(i=
0;i
<=
9;i++)scanf("%d",&a[i]);[例]
#include
<stdio.h>main(){int
i,a[10];printf(“%d”,a[0]);}10程序舉例編寫程序,定義一個(gè)含有10元素的int類型數(shù)組,依次給數(shù)組元素賦偶數(shù)2,4,6,8….,然后逆序輸出119.2
一維數(shù)組和指針1.一維數(shù)組元素的地址和一維數(shù)組名a[0]a[1]a[2]a[3]a[9]整型指針p...&a[0]p12例:int
a[10];數(shù)組元素a[0]----a[9],都是整型變量,因此都有一個(gè)地址:&
a[i](0<=i<=9)例:inta[10];數(shù)組名是表示數(shù)組首地址的地址常量p=a;
等價(jià)于:p=&a[0];9.1
一維數(shù)組和指針1.一維數(shù)組元素的地址和一維數(shù)組名a[0]a[1]a[2]a[3]a[9]整型指針p...****a設(shè):inta[10],*p;數(shù)組名是表示數(shù)組首地址的地址常量對(duì)于一維數(shù)組a,數(shù)組名a是數(shù)組元素
a[0]的地址,即&a[0]與a是等值的。屬性也相同,都是int
的地址。&a[1]是數(shù)組元素的地址;
&a[2]是數(shù)組元素的地址;&a[i](0<=i<=9有效)是數(shù)組元素的地址;a++;
a=&a[3];13設(shè)有:int
i,a[10],*p,
*p1,
*p2;則:p=&i;p=a;(將變量i地址p)(將數(shù)組a首地址p)p1=&a
[i]; (將數(shù)組元素地址p1)p1=p2; (指針變量p2值p1)不能把一個(gè)整數(shù)p,也不能把p的值整型變量如
int
i,
*p;p=1000;i=p;()()指針變量所指的變量的數(shù)據(jù)類型只能是它的基類型1415指針變量與一維數(shù)組的關(guān)系設(shè)有:int
*p
與
int
a[10]數(shù)組名是指針(地址)常量若已有p=a;
即已使p指向了a[0];則p+i
是a[i]的地址數(shù)組元素的表示方法:下標(biāo)法和指針法,
即若:
p=a;則
p[i]
a[i]
*(p+i)
*(a+i)形參數(shù)組實(shí)質(zhì)上是指針變量,即int a[
]
int*a在定義指針變量(不是形參)時(shí),不能把int
*p
寫成intp[];系統(tǒng)只給p分配能保存一個(gè)指針值的內(nèi)存區(qū)(4字節(jié));而給a分配4*10字節(jié)的內(nèi)存區(qū)a[0]a[1]a[2]a[3]a[9]整型指針p...&a[0]pa+1是數(shù)組元素a[1]的地址;即:&a[1]a+i是數(shù)組元素a[i]的地址;即:&a[i]a(即a+0)是a[0]的地址;即:&a[0]通過數(shù)組的首地址設(shè):inta[10],*p=a;數(shù)據(jù)元素for
(k=0;k<10;k++
)printf(“%4d”, *(a+k)
);等價(jià)于:printf(“%4d”,
a[k]);16a[0]a[1]a[2]a[3]a[9]整型指針p...&a[0]pp=a;p指向a數(shù)據(jù)的首地址*p
*(&a[0])
a[0]*(p+1)
*(&a[0]+1)
a[1]通過指針 一維數(shù)據(jù)元素設(shè):inta[10],*p=a;for
(k=0;k<10;k++
)printf(“%4d”, *(p+k));等價(jià)于:printf(“%4d”,
a[k]);17a[0]a[1]a[2]a[3]a[9]...aa+1a+2a+9元素下標(biāo)法
指針法a[0]a[1]a[2]a[3]a[9]...地址 地址元素*p*(p+1)*(p+2)*(p+9)(3)數(shù)組元素表示方法[]
變址運(yùn)算符18a[i]
*(a+i)a[0]
*a
pa[1]
*(a+1)
p+1a[2]
*(a+2)
p+2a[9]
*(a+9)
p+9a[i]
p[i]
*(p+i)
*(a+i)p[0]p[1]p[2]p[9]要注意的幾點(diǎn)是:指針和數(shù)組名是有區(qū)別的:指針是一個(gè)變量,其值是地址,指針可以自減或自加,表示指針前后移動(dòng);數(shù)組名是一個(gè)地址它是在系統(tǒng)為數(shù)組分配存貯單元時(shí)確定的,是一個(gè)常量所以數(shù)組名不能自增自減,也不能在賦值語(yǔ)句中作左值。如:int
a[4];a=3;a++;都是錯(cuò)誤的19a[0]a[1]a[2]a[3]a[9]整型指針p...&a[0]p例:已定義如右圖的數(shù)組,程序運(yùn)行后輸出結(jié)果分別為int
a[10]={0};int
i;for(i=0;i<10;i++)
a[i]=i;)p=a;
printf(“%d\n”,*p++);p=a; printf(“%d\n”,*a++);
(p=a; printf(“%d\n”,
(p++)>=a);p=a; printf(“%d\n”,
*(a+3)
);p=a; printf(“%d\n”,
*(p+5)
);p=a; printf(“%d\n”,
(p++)-a
);209.3
函數(shù)之間對(duì)一維數(shù)組和數(shù)組元素的應(yīng)用9.3.1
數(shù)組元素作實(shí)參數(shù)組元素和普通的變量一樣,在函數(shù)中只能對(duì)該變量進(jìn)行操作,不能直接對(duì)應(yīng)的數(shù)組元素,更不能再函數(shù)內(nèi)改變對(duì)應(yīng)數(shù)組的值。219.3
函數(shù)之間對(duì)一維數(shù)組和數(shù)組元素的應(yīng)用9.3.1
數(shù)組名作實(shí)參數(shù)組名是地址,對(duì)應(yīng)形參應(yīng)當(dāng)是一個(gè)指針變量。可以通過指針變量、操作調(diào)用函數(shù)中對(duì)應(yīng)數(shù)組元素。#define
M
10f(int
x[
],int
n){…}main(
){int
a[M];…f(a,M);…}對(duì)應(yīng)的形參可以是x[],x[M],或者*x。都是把實(shí)參的首地址傳遞給形參。傳遞的不是整個(gè)數(shù)組被調(diào)用函數(shù)中,并沒有為對(duì)應(yīng)的形參另外開辟一串存儲(chǔ)單元,而只是開辟了一個(gè)指針變量的
單元。2223例:輸出數(shù)組中的值#include<stdio.h>void
print(int
x[10],int
n){int
i;for(i=0;i<n;i++)printf((i+1)%5==0?“%4d\n”:”%4d”,x[i]
);}main(){int
a[10];int
i;for(i=0;i<10;i++)
scanf(“%d”,&a[i]);print(a,10);}249.3函數(shù)之間對(duì)一維數(shù)組和數(shù)組元素的應(yīng)用9.3.2
數(shù)組元素地址作實(shí)參和數(shù)組名作實(shí)參情況相同。f(int
x[
],int
n){…}main(
){int
a[10];…f(&a[4],10);…}把實(shí)參的首地址(&a[4])傳遞給形參。25#include<stdio.h>void
print(int
*x,int
n){int
i;for(i=0;i<n;i++)printf((i+1)%5==0?“%4d\n”:”%4d”,x[i]
);}main(){int
a[10];int
i;for(i=0;i<10;i++)
scanf(“%d”,&a[i]);print(&a[1],8);}9.3函數(shù)之間對(duì)一維數(shù)組和數(shù)組元素的應(yīng)用9.3.3
函數(shù)的指針形參和函數(shù)體中的數(shù)組的區(qū)別#define
N
10int
*
f(int
x[N],int
n){int
b[N];…return
b;}main(
){int
a[10],*p;…p=
f(a,10);…}形參在形式上寫x[],x[M],或者*x。x都被當(dāng)做一個(gè)指針變量處理??蛇M(jìn)行x++等操作。f函數(shù)中的b數(shù)組,b是一個(gè)地址常量,不可以重新賦值。f函數(shù)被調(diào)用結(jié)束, 內(nèi)存,p不指向任何對(duì)象成為“無向指針”2627例求學(xué)生的平均成績(jī)#include
<stdio.h>float
average(int
stu[10],
int
n);void
main(){int
score[10],
i;float
aver;printf("Input
10
scores:\n");for(
i=0;
i<10;
i++
)scanf("%d",
&score[i]);aver=average(score,10);printf("Average is:%.2f",
av);}float average(float
stu[10],
int
n){
int
i;float
aver,sum=0;for(
i=1;
i<n;
i++
)sum
+=
stu[i];aver
=
sum/n;retur
;}實(shí)參用數(shù)組名012..9score122356….….88stu例數(shù)組元素與數(shù)組名作函數(shù)參數(shù)比較#include
<stdio.h>void
swap2(int
x,int
y){ int
z;z=x;
x=y;
y=z;}main(){ int
a[2]={1,2};swap2(a[0],a[1]);printf("a[0]=%d\na[1]=%d\n",a[0],a[1]);}值傳遞28例數(shù)組元素與數(shù)組名作函數(shù)參數(shù)比較#include
<stdio.h>void
swap2(int
x
[]){ int
z;z=x[0];
x[0]=x[1];x[1]=z;}main(){ int
a[2]={1,2};swap2(a);printf("a[0]=%d\na[1]=%d\n",a[0],a[1]);}地址傳遞29309.5
二維數(shù)組的定義(1)1、一般形式:類型說明符
數(shù)組名[常量表達(dá)式][常量表達(dá)式]例如:int
a[3][4];包含:a[0][0],a[0][1],a[0][2],a[0][3]a[1][0],a[1][1],a[1][2],a[1][3]a[2][0],a[2][1],a[2][2],a[2][3]定義了一個(gè)3*4(3行4列)的數(shù)組.注意:
不能寫成
int
a[3,4];二維數(shù)組的定義(2)可以把二維數(shù)組看作是一種特殊的一維數(shù)組:它的元素又是一個(gè)一維數(shù)組.例如:inta[3][4];/*定義了一個(gè)3*4(3行4列)的數(shù)組.*/我們可以將a看成一個(gè)一維數(shù)組:a[0]、a[1]、a[2],每個(gè)元素又是包含4個(gè)元素的一維數(shù)組。a[0]a[1]a[2]---------a[0][0]31a[0][1]a[0][2]a[0][3]---------a[1][0]a[1][1]a[1][2]a[1][3]---------a[2][0]a[2][1]a[2][2]a[2][3]a二維數(shù)組的存放2、存放順序:按行存放,即在內(nèi)存中先順序存放第一行的元素,再存放第二行的元素。int
a[3][4];a[0][0]
a[0][1]
a[0][2]
a[0][3]a[1][0]
a[1][1]
a[1][2]
a[1][3]a[2][0]
a[2][1]
a[2][2]
a[2][3]321、數(shù)組元素的表示形式:數(shù)組名[下標(biāo)][下標(biāo)]例如:a[3][4]區(qū)分在定義數(shù)組時(shí)用的a[3][4]和下標(biāo)可以是整型表達(dá)式例如:a[2-1][2*2-1]二維數(shù)組的元素a[3][4]數(shù)組元素可以出現(xiàn)在表達(dá)式中,也可以被賦值。例如:b[1][2]=a[2][3]/2;2、注意:使用數(shù)組元素時(shí),下標(biāo)值應(yīng)該在定義的數(shù)組大小的范圍內(nèi)。不要出現(xiàn)這樣的錯(cuò)誤:例如:int
a[3][4];a[3][4]=3;33二維數(shù)組的初始化(1)1、分行給二維數(shù)組賦初值。例如:int
a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};1234567891011122、可以將所有數(shù)據(jù)寫在一個(gè)花括弧內(nèi),按數(shù)組排列的順序?qū)Ω髟刭x初值。例如:int
a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};12345678910111234二維數(shù)組的初始化(2)3、可以對(duì)部分?jǐn)?shù)據(jù)賦初值。例如:int
a[3][4]={{1},{5},{9}};100050009000例如:int
a[3][4]={{1},{5,6}};100056000000例如:int
a[3][4]={{1},{},{0,0,11}};100000000011035二維數(shù)組的初始化(3)4、如果對(duì)全部元素賦初值(即提供全部初始數(shù)據(jù)),則定義數(shù)組時(shí)對(duì)第一維的長(zhǎng)度可以不指定,但第二維的長(zhǎng)度不能省。例如:
int
a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};等價(jià)于:int
a[][4]={1,2,3,4,5,6,7,8,9,10,11,12};1234567891011120030000001000定義時(shí)也可以賦值部分元素而省略第一維的長(zhǎng)度,但應(yīng)分行賦初值。
第1維長(zhǎng)度由以下規(guī)則確定:a當(dāng)初值個(gè)數(shù)能被第二維的常量表達(dá)式整除時(shí),商就是第一維的大小。b不能整除時(shí):第一維的大小=商+1例如:int
a[][4]={{0,0,3},{},{0,10}};36(4)打印3*4的矩陣main(){int
i,j,row=0,colum=0,max;int
a[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}};max=a[0][0];for(i=0;i<=2;i++){for(j=0;j<=3;j++)printf(“%4d”,a[i][j]);printf(“\n”);}}運(yùn)行結(jié)果為:371
2
3
4<CR>9
8
7
6<CR>-10
10 -5
2<CR>(4)38例有一個(gè)3*4的矩陣,要求編程序求出其中值最大的那個(gè)元素的值,以及其所在的行號(hào)和列號(hào).main(){int
i,j,row=0,colum=0,max=0;int
a[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}};for(i=0;i<3;i++){for(j=0;j<4;j++)if(a[i][j]>max)
{max=a[i][j];
row=i;colum=j;}}printf(“max=%d,row=%d,colum=%d\n”,max,row,
colum);}9.6
二維數(shù)組和指針a[0]---------a[0][0]a[0][1]a[0][2]a[0][3]a[1]---------a[1][0]a[1][1]a[1][2]a[1][3]a[2]---------a[2][0]a[2][1]a[2][2]a[2][3]可以把二維數(shù)組看作是一種特殊的一維數(shù)組:它的元素又是一個(gè)一維數(shù)組.例如:int
a[3][4];/*定義了一個(gè)3*4(3行4列)的數(shù)組.*/int
*p=a[i];我們可以將a看成一個(gè)一維數(shù)組:a[0]、a[1]、a[2],每個(gè)元素又是包含4個(gè)元素的一維數(shù)組。aa[0],a[1],a[2]都是一維數(shù)組名,同樣也代表一個(gè)不可變的地址常量。其值為二維數(shù)組每行第一個(gè)元素的地址。若表達(dá)式a[0]+1,表達(dá)式中1應(yīng)該是4個(gè)單位(VC)。若有p=a[i],合法。因?yàn)閍[i]=*(a+i),所以與p=*(a+i)等價(jià)39二維數(shù)組名也是一個(gè)地址值常量例如:int
a[3][4];int
*
p;二維數(shù)組名也是一個(gè)地址常量,其值為二維數(shù)組中第一個(gè)元素的地址。a的值與a[0],a+1的值與a[1],相同,a+2的值與a[2]相同,分別表示a數(shù)組的第一、第二、第三行的首地址。所以二維數(shù)組名是一個(gè)行指針。p=a;p=a[i];合法int
a[3][4];a[0][0]a[0][1]a[0][2]a[0][3]a[1][0]a[1][1]a[1][2]a[1][3]a[2][0]a[2][1]a[2][2]a[2][3]aa+140int
a[3][4];a[0][0]a[0][1]a[0][2]a[0][3]a[1][0]a[1][1]a[1][2]a[1][3]a[2][0]a[2][1]a[2][2]a[2][3]二維數(shù)組元素表示形式:(1)a[1][2](2)*(a[1]+2)(3)*(*(a+1)+2)(4)*(&a[0][0]+1*4+2)地址表示:a+1&a[1][0]a[1]*(a+1)屬性為行指針屬性為元素指針地址表示:&a[1][2]a[1]+2*(a+1)+2(4)&a[0][0]+1*4+241二維數(shù)組元素的地址42則:a[i][j];*(a[i]+j)*(*(a+i)+j)*(&a[0][0]+4*i+j)int
a[3][4];a[0][0]a[0][1]a[0][2]a[0][3]a[1][0]a[1][1]a[1][2]a[1][3]a[2][0]a[2][1]a[2][2]a[2][3]9.6.3指針數(shù)組(多個(gè)指針)指針型變量的每個(gè)元素是地址性的。指針數(shù)組中每一個(gè)變量是指針可以指向一行。定義:int
*p[3];int
a[3][4];p[i]=a[i]p[3]就是指針數(shù)組,p[0],p[1],p[2]中各可存放三個(gè)地址值指向目標(biāo):int
*pa[]={a[0],
a[1],a[2]};pa[0]
是數(shù)組a第一行的行地址a[0],pa[1]
是數(shù)組a第二行的行地址a[1],pa[2]
是數(shù)組a第三行的行地址a[2]。43可見,通過指針數(shù)組的元素,可以得到每一行的行地址a[i],通過行指針a[i],可以找到該行的第j列的元素,所以,用指針數(shù)組表示數(shù)組的任一個(gè)元素a[i][j]的方式如下:*(pa[i]+j),
pa[i][j]449.6.4
行指針變量(一個(gè)指針)定義形式:數(shù)據(jù)類型(*指針名)[一維數(shù)組維數(shù)];int
(*p)[4]與int
*p[4]不同首地址,p是行指針可讓p指向二維數(shù)組某一行如(i)nt不能a[3少][4],(*p)[4]=a;int
a[3][4];a[0][0]a[0][1]a[1][0]a[1][1]a[2][0]a[2][1]a[0][2]a[0][3]a[1][2]a[1][3]a[2][2]a[2][3]例
int (*p)[4];
int
a[3][4];
p=a;aa+2pp+1p的值是一維數(shù)組p[0的]+1或*p+1*(*p+1)或(*p)[1]p[1]+2或*(p+1)+2*(*(p+1)+2)p+245一維數(shù)組指針變量維數(shù)和a+1二維數(shù)組列數(shù)必須相同469.7
二維數(shù)組名和指針數(shù)組作為參數(shù)9.7.1
二維數(shù)組名作為實(shí)參時(shí)二維數(shù)組名作為實(shí)參時(shí),對(duì)應(yīng)的形參必須是一個(gè)行指針變量。int
fun(int
(*x)[N]){…}main(
){int
a[M][N],;…f(a);…}fun函數(shù)的形參可以是以下三種之一:fun(int(*x)[N])fun(intx[][N])fun(intx[M][N])列下標(biāo)不可缺把x處理成一個(gè)行指針。并沒有開辟一串
單元,而只是開辟了一個(gè)指針變量的 單元。voidfun(int x[][3],
int
row,
int
col){ int
i,j,result;for(i=0;i<col;i++){
result=0;for(j=0;j<row;j++)result+=x[j][i];x[0][i]=result;}}main(){ int
a[2][3]={3,6,9,1,4,7};int
row=2,col=3,i;fun(a,row,col);for(i=0;i<col;i++)printf(“a[0][%d]=%d\n”,i,a[0][i]);}運(yùn)行結(jié)果為:a[0][0]=4a[0][1]=10a[0][2]=1647489.7
二維數(shù)組名和指針數(shù)組作為參數(shù)9.7.2
指針數(shù)組名作為實(shí)參時(shí)指針數(shù)組名作為實(shí)參時(shí),對(duì)應(yīng)形參必須是一個(gè)的指針數(shù)組形式int
fun(int
*x[N]){…}main(
){int
a[M][N],*ps[M];…for(i=0;i<M;i++)
ps[i]=s[i];f(ps);…}fun函數(shù)的形參可以是以下三種之一:
fun(int*x[N])fun(int*x[])fun(int**x)傳遞的是一維指針數(shù)組名493.
二維數(shù)組的指針作函數(shù)參數(shù)用指向數(shù)組元素的指針變量作參數(shù)用指向二維數(shù)組“行”的指針變量作參數(shù)用二維數(shù)組名作參數(shù)實(shí)參形參數(shù)組名a數(shù)組int
x[][4]數(shù)組名a指針變量int
(*q)[4]指針變量p1數(shù)組int
x[][4]指針變量p1指針變量int(*q)[4]指針變量p2指針變量int
*q若有定義:int
a[3][4];
int
(*p1)[4]=a;int
*p2=a[0];例
:
求二維數(shù)組中最大元素值j57683412j57683412iji13241517max=11
32
415
17max=7int
max_value(int array[][4]){ int
i,j,k,max;max=array[0][0];for(i=0;i<3;i++)if(array[i][j]>max)max=array[i][j];return(max);}main(){inta[3][4]={{1,3,5,7},{2,4,6,8},{15,17,34,12}};printf("max
value
is%d\n",max_value(a));}形參數(shù)組第一維維數(shù)可省略,第二維必須相同for(j=0;j<4;j++)
intarray[][4]50例:
求二維數(shù)組中各行元
和get_sum_row(int x[][3],
int result[]
,int
row,
int
col){ int
i,j;for(i=0;i<row;i++){
result[i]=0;for(j=0;j<col;j++)result[i]+=x[i][j];}}main(){ int
a[2][3]={3,6,9,1,4,7};intsum_row[2],row=2,col=3,i;get_sum_row(a,sum_row,row,col);for(i=0;i<row;i++)printf("The
sum
of
row[%d]=%d\n",i+1,sum_row[i]);}369147axresultsum_row181251例:
3個(gè)學(xué)生各學(xué)4門課計(jì)算總平均分,并輸出第n個(gè)學(xué)生成績(jī)main(){
void
average(float
*p,int
n);void
search(float
(*p)[4],int
n);float
score[3][4]={{65,52,79,60},{80,87,90,81},{90,99,100,98}};average(*score,12);search(score,2);}void
average(float
*p,int
n){ float
*p_end,
sum=0,aver;p_end=p+n-1;for(;p<=p_end;p++)sum=sum+(*p);aver=sum/n;printf("average=%5.2f\n",aver);}void
search(float
(*q)[4],
int
n){ int
i;printf("
No.%d
:\n",n
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 促進(jìn)學(xué)生全面發(fā)展的活動(dòng)計(jì)劃
- 學(xué)習(xí)成果分享的策略計(jì)劃
- 倉(cāng)庫(kù)個(gè)人工作計(jì)劃的調(diào)整與補(bǔ)充
- 各類??茀f(xié)作總結(jié)與整合計(jì)劃
- 2025年劇裝道具相關(guān)工藝美術(shù)品項(xiàng)目合作計(jì)劃書
- 2025年電子工程安裝服務(wù)項(xiàng)目建議書
- 2025年速釋制劑材料項(xiàng)目發(fā)展計(jì)劃
- 跨部門協(xié)調(diào)合作流程管理規(guī)定
- 月度業(yè)務(wù)討論
- 新項(xiàng)目合作投資協(xié)議
- 2024年全國(guó)國(guó)家電網(wǎng)招聘之電網(wǎng)計(jì)算機(jī)考試歷年考試題(附答案)
- 股權(quán)聯(lián)營(yíng)合作協(xié)議書
- 化學(xué)元素周期表注音版
- 藥物過敏性休克
- T-GDASE 0042-2024 固定式液壓升降裝置安全技術(shù)規(guī)范
- 氣血疏通中級(jí)班教材
- 2024福建省廈門市總工會(huì)擬錄用人員筆試歷年典型考題及考點(diǎn)剖析附答案帶詳解
- 四川省康定市大槽門金礦資源儲(chǔ)量核實(shí)報(bào)告
- DL-T-805.1-2011火電廠汽水化學(xué)導(dǎo)則第1部分:鍋爐給水加氧處理導(dǎo)則
- 2024年一年級(jí)數(shù)學(xué)下冊(cè)教學(xué)計(jì)劃15篇
- 嶺南版六年級(jí)美術(shù)下冊(cè)教學(xué)工作計(jì)劃
評(píng)論
0/150
提交評(píng)論