當前位置:首頁 » 編程語言 » c語言二維數組形參

c語言二維數組形參

發布時間: 2023-07-29 11:25:01

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語言中怎麼用二維數組作為函數參數

二維數組作為函數參數,實參可以直接使用二維數組名,在被調用函數中對形參數組定義可以指定所有維數的大小,也可以省略第一維的大小說明,如:

因為從實參傳遞來的是數組的起始地址,如果在形參中不說明列數,編譯器將無法定位元素的的位置。

Ⅲ c語言中的結構體二維數組做參數問題

1、如果在函數外定義的結構數組,又要在一個函數中進行輸入、輸出,通常情況下,其參數傳遞類型需要傳址,即
void shuchu(struct std **cansu);
void shuchu(struct std *cansu[]);

這樣調用改為 shuchu(&aa);

對函數內的相應操作改為指針操作即可。

2、通常情況下,對於一個系統設計而言,其輸入輸出是分開的,也即在2個函數中,從系統分析而言,建議分開。當然,就測試而言,是可以的。

3、如果一定要採用2維數組做參數,按照對於多維數組做參數的要求,前幾維一定要給出確切的數值

如2維: void shuchu(struct std cansu[5][]) 就可以了。

Ⅳ C語言中如何將二維字元數組作為函數參數引用傳遞

不可能達到目的。因為C語言中沒有引用這類型,C++才有。另,C/C++都不支持傳遞數組,只能傳遞數組的首元素或行指針,所以即使是C++,也只能傳遞數組指針的引用,而不可能傳遞數組的引用,因為數組沒有引用。

Ⅳ 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語言:二維數組 形參傳值寫法

編譯器實際處理多維數組是把一維數組分段處理的,也就是說實際上並不存在多維數組,多維數組僅僅是個邏輯概念。
例如下面這個:
int fun(int a[2][3],int n);

或者
int fun(int a[][3],int n);
要指出列數是多少,行數寫不寫都一樣,行數要通過n進行傳遞。

假設
int b[2][3]={};
則調用的時候可以寫:
fun(b,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;
}
熱點內容
如何選擇家庭最佳配置 發布:2025-02-07 11:06:50 瀏覽:86
javatomcat伺服器搭建伺服器 發布:2025-02-07 10:55:22 瀏覽:622
vcenter存儲器集群 發布:2025-02-07 10:54:31 瀏覽:583
咖啡的腳本 發布:2025-02-07 10:46:18 瀏覽:520
nsftp速度 發布:2025-02-07 10:30:58 瀏覽:431
存儲過程ifor 發布:2025-02-07 10:25:28 瀏覽:434
命令行執行oracle腳本文件命令行 發布:2025-02-07 10:14:49 瀏覽:96
ibook安卓怎麼下 發布:2025-02-07 10:12:13 瀏覽:693
銀行卡沒有密碼怎麼辦啊 發布:2025-02-07 10:08:13 瀏覽:31
游戲庫源碼 發布:2025-02-07 09:49:15 瀏覽:54