當前位置:首頁 » 編程語言 » c語言二維數組如何傳參數
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言二維數組如何傳參數

發布時間: 2022-07-29 23:49:56

❶ 關於c語言的二維數組作為函數參數的問題

所謂二維數組,實際上是指向數組的指針,比如:

int n=2,m=3;

int arr[n][m];

實際上相當於:

int n=2,m=3;

int (*arr)[m];

所以,傳遞二維數組作為參數,實際上就是傳遞了一個指針。

將形參的類型定義成int*,再在函數內部轉換回指向數組的指針就行了,比如:

void f(int *p,int row,int column)

{

int (*arr)[column]=(int (*)[column])p;

//使用二維數組arr

}

這樣傳遞參數:

int n=5,m=6;

int arr[n][m];

f((int*)arr,n,m);

下面是一個例子:

#include <stdio.h>

void f(int *p,int row,int column)

{

int (*arr)[column]=(int (*)[column])p;

for(int i=0;i<row;i++)

{

for(int j=0;j<column-1;j++)

printf("%d,",arr[i][j]);

printf("%d ",arr[i][column-1]);

}

}

int main()

{

int n;

scanf("%d",&n);

int arr[n][n];

for(int i=0;i<n;i++)

{

for(int j=0;j<n;j++)

arr[i][j]=i*n+j;

}

f((int*)arr,n,n);

return 0;

}

這是運行截圖:

❷ c語言二維數組傳值

多維數組傳遞,n要為固定大小,void p( arr[][5] );
int arr[2][5];

p(arr);

來自下面網址

網頁鏈接

❸ C語言怎麼以二維數組作為參數傳遞的問題

考慮要把a作為參數傳入到print中,那麼print函數就要定義一個接收二維數組的參數,那麼什麼參數能接收二維數組呢。
就是print(int (*newbuf)[3])
然後newbuf的地址就是a的地址,然後newbuf[i][j]來訪問每一個元素了

有問題繼續問哈,寫的可能不太明白

❹ C語言中如何將二維數組作為函數的參數傳遞

在c語言中可以用二維數組作為實參或者形參。
1、函數中用二維數組作為形參,函數聲明中可以指定所有維數的大小,也可以省略第1維的維數如:
void f(int array[3][10]); //正確
void f(int array[][10]); //正確上面的兩種二維數組形參表示都是正確的。
2、函數中用二維數組作為形參,不能把第2維或者更高維的大小省略,如下面的定義是不合法的:
void f(int array[][]); //錯誤

因為從實參傳遞來的是數組的起始地址,在內存中按數組排列規則存放(按行存放),而並不區分行和列,如果在形參中不說明列數,則系統無法決定應為多少行多少列,不能只指定一維而不指定第二維,下面寫法是錯誤的:

void f(int array[3][]); //錯誤 3、二維數組作為實參傳遞時,必須保證實參第2維的維數與形參第2維的維數相同,因為必須要保證形參和實參的數據類型一致。比如定義如下函數:
void f(int array[][10]);可以將如下數組傳遞給函數f。
int a[2][10] = {1,2,3,4};
int b[4][10] = {1};

❺ C語言中如何將二維數組作為函數的參數傳遞

函數原型 type fun (type (name*)[size])

type是你要定義的類型,fun是函數名,name是在函數中二維數組的名字,
size是二維數組第2維的長度。
這樣調用這個函數只需要把二維數組函數名傳遞就可以了。

❻ C語言 二維數組傳遞參數

二維數組傳遞給函數的時候,有兩種方式,一種是a[][6],一種是(*a)[6],這里的6是不能省略的,不然編譯器不知道如何通過加多少來偏移這個指向數組的指針。

❼ 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語言問題,請問二維數組的函數參數是怎麼傳遞的

數組為參數時會退化為一個二級指針傳遞,如圖,可以將函數頭部寫成
void shuchu(int **array_num);
在函數中調用時,直接傳遞數組名就可以了,數組名可以視為數組的「頭指針」,可以用這個指針進行一系列的相關操作,如圖,可以按如下方式調用
shuchu(a);

另外,一個建議:不要在傳參時忽略數組的長度,最好顯式的以參數的形式傳遞給函數
或者,在數組中做標志,在函數中使用時可以根據標志自行分出維度

滿意請採納,不滿意請追問

❾ C語言中 指針做函數參數傳遞二維數組

#include <stdio.h>

void fun(int (*p1)[3],int (*p2)[3]);

int main()

{

int p1[3][3]={{7,8,9},{4,5,6},{1,2,3}} ;

int p2[3][3] = {0};

int i = 0, j = 0;

fun(p1,p2);

for(i = 0;i < 3;i++){

for(j = 0;j < 3;j++){

printf("%d ",*(*(p2+i)+j));

}

printf(" ");

}

return 0;

}

void fun(int (*p1)[3],int (*p2)[3])

{

int i = 0,j = 0;

for(i = 0;i < 3;i++){

for(j = 0;j < 3;j++){

*(p2[j]+i) = *(p1[i]+j);

}

}

}

(9)c語言二維數組如何傳參數擴展閱讀:

函數指針的聲明方法為:

返回值類型 ( *指針變數名) ([形參列表]);

其中,「返回值類型」說明函數的返回類型,「(指針變數名 )」中的括弧不能省,括弧改變了運算符的優先順序。若省略整體則成為一個函數說明,說明了一個返回的數據類型是指針的函數,後面的「形參列表」表示指針變數指向的函數所帶的參數列表。例如:

int func(int x); /* 聲明一個函數 */

int (*f) (int x); /* 聲明一個函數指針 */

f=func; /* 將func函數的首地址賦給指針f */

或者使用下面的方法將函數地址賦給函數指針:

f = &func;

賦值時函數func不帶括弧,也不帶參數,由於func代表函數的首地址,因此經過賦值以後,指針f就指向函數func(x)的代碼的首地址。

網路-函數指針

❿ 二維數組如何當參數傳遞

在形參是數組的情況下,只要是數組,無論維數,實際上在調用函數時,傳給函數的將是一個數組的首地址,以及維數等相關信息
也就是說,在函數執行過程中,並不會新開辟內存空間,而是形參實參共用同一段內存空間
所以,在這種情況下,函數內部對數組進行修改,其值會返回給實參
你的例子中調用部分有問題,不能這樣
shuru(a[10][2])
而是
shuru(a)
因為a[10][2]代表數組a中的一個元素,而且是越界的
而a才是數組名