c語言二維數組參數
Ⅰ 關於c語言二維數組作為參數
你在這里使用指向整數的指針去訪問一個二維,不是不可以,但是前提是這里的size,必須與N的值完全相等。這里出錯的原因就在於你程序的N=10,而size卻等於3。你試一下定義N=3,看看怎麼樣。
Ⅱ C語言怎麼以二維數組作為參數傳遞的問題
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
voidfun(intx[][3])
{
inti,j;
for(i=0;i<2;i++)
{
for(j=0;j<3;j++)
{
printf("%d",x[i][j]);
}
printf(" ");
}
}
intmain()
{
inta[2][3]={1,2,3,4,5,6};
fun(a);
return0;
}
定義形參的時候定義列的數目即可,其實就算你隨便定義行和列的大小也可以運行,只要將數組地址傳進去即可
Ⅲ c語言中怎麼用二維數組作為函數參數
C語言中
指針做函數參數傳遞二維數組有兩種基本方法:1、傳遞「數組指針」<pre
t="code"
l="cpp">#include
<stdio.h>
void
output(
int
(*pa)[3],
int
n
)//這個函數只能輸出n行3列的二維數組
{
int
i,j;
for(
i=0;i<n;i++
){
for(
j=0;j<3;j++
)
printf("%d
",
pa[i][j]
);
printf("\n");
}
}
void
main()
{
int
a[2][3]={
{1,2,3},
{4,5,6}
};
output(a,2);
}2、傳遞「指針數組」
先將二維數組的行指針存儲到一個指針數組中,再將指針數組傳遞到子函數中去。<pre
t="code"
l="cpp">#include
<stdio.h>
void
output(
int
*pa[],
int
row,int
col
)
//這個函數更通用,但調用前,要做好准備工作。
{
int
i,j;
for(
i=0;i<row;i++
){
for(
j=0;j<col;j++
)
printf("%d
",
pa[i][j]
);
printf("\n");
}
}
void
main()
{
int
a[2][3]={
{1,2,3},
{4,5,6}
};
int
i;
int
*pa[2];
for(
i=0;i<2;i++
)
pa[i]=a[i];
output(pa,
2,
3);
}
Ⅳ C語言中如何將二維數組作為函數的參數傳遞
函數原型 type fun (type (name*)[size])
type是你要定義的類型,fun是函數名,name是在函數中二維數組的名字,
size是二維數組第2維的長度。
這樣調用這個函數只需要把二維數組函數名傳遞就可以了。
Ⅳ c語言c++語言如何用二維數組做形參
C/C++中,二維數組的第一維的每一個元素都是一維數組。所以,用指向一維數組的指針或用第一維維數空缺的二維數組作為函數的形式參數都能達到目的。設處理數組為int型,舉例代碼如下:
//#include"stdafx.h"//Ifthevc++6.0,withthisline.
#include"stdio.h"
voidmyprint(int(*p)[5]){//p是指向有5個int型元素的一維數組的指針
//voidmyprint(intp[][5]){//這樣寫效果是一樣的
inti,j;
for(i=0;i<3;i++){
for(j=0;j<5;printf("%3d",p[i][j++]));
printf(" ");
}
}
intmain(void){
inta[3][5]={{1,2,3,4,5},{6,7,8,9,10},{11,12,13,14,15}};
myprint(a);
return0;
}
Ⅵ C語言中如何將二維數組作為函數的參數傳遞
在C語言中可以用二維數組作為實參或者形參。
1、函數中用二維數組作為形參,函數聲明中可以指定所有維數的大小,也可以省略第1維的維數如:
voidf(intarray[3][10]);//正確
voidf(intarray[][10]);//正確
上面的兩種二維數組形參表示都是正確的。
2、函數中用二維數組作為形參,不能把第2維或者更高維的大小省略,如下面的定義是不合法的:
voidf(intarray[][]);//錯誤
因為從實參傳遞來的是數組的起始地址,在內存中按數組排列規則存放(按行存放),而並不區分行和列,如果在形參中不說明列數,則系統無法決定應為多少行多少列,不能只指定一維而不指定第二維,下面寫法是錯誤的:
voidf(intarray[3][]);//錯誤
3、二維數組作為實參傳遞時,必須保證實參第2維的維數與形參第2維的維數相同,因為必須要保證形參和實參的數據類型一致。比如定義如下函數:
voidf(intarray[][10]);
可以將如下數組傳遞給函數f。
inta[2][10]={1,2,3,4};
intb[4][10]={1};
Ⅶ C語言 二維數組傳遞參數
二維數組傳遞給函數的時候,有兩種方式,一種是a[][6],一種是(*a)[6],這里的6是不能省略的,不然編譯器不知道如何通過加多少來偏移這個指向數組的指針。
Ⅷ C語言 二維數組做函數參數
#include
<stdio.h>
int
main()
{
void
average(float
*p,float
*p1,int
n);
float
score[3][4]={{65,67,70,80},{80,87,90,81},{90,99,100,98}};
average(score[0],&score[2][3],12);
return
0;
}
void
average(float
*p,float
*p1,int
n)
{
float
sum=0;
for(;p<=p1;p++)
{
sum+=(*p);
}
printf("\t%5.2f",(sum/n));
}
在你給出的程序有兩處錯誤
1,average(*score,12);
這句中你的本意是傳輸score【0】【0】的地址
但是*score是不行得
2,for(;p<=(p+n-1);p++)這句中
p是指向score【】【】的指針
p++是p向後移時候
(p+n-1)已不再指向score【2】【3】這個數組的末位置
Ⅸ c語言,二維數組如何做參數
如果你的二維數組是確定的,比如本例中的2×2。
那麼,需要把shuchu函數改成
voidshuchu(inta[][2],intn,intm)
{
printf("%d",a[n][m]);
}
這樣,主函數調用
shuchu(a,1,1);
結果為: