1樓:匿名使用者
#include
void fun(int (*p1)[3],int (*p2)[3]);
int main()
int p1[3][3]=,,} ;
int p2[3][3] = ;
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("\n");
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);
2樓:匿名使用者
c語言中 指標做函式引數傳遞二維陣列有兩種基本方法:
1、傳遞「陣列指標」
#include
void output( int (*pa)[3], int n )//這個函式只能輸出n行3列的二維陣列
{int i,j;
for( i=0;i
2、傳遞「指標陣列」 先將二維陣列的行指標儲存到一個指標陣列中,再將指標陣列傳遞到子函式中去。
#include
void output( int *pa, int row,int col ) //這個函式更通用,但呼叫前,要做好準備工作。
{int i,j;
for( i=0;i
3樓:古老的情歌
簡直將二維指標陣列首地址傳出去。
4樓:
//#include "stdafx.h"//vc++6.0加上這一行.
#include "stdio.h"
void myprint(int (*p)[3])}void mytranspose(int (*p)[3],int (*q)[3])
int main(void),,},b[3][3];
printf("before the transpose:\n");
myprint(a);
printf("after the transpose:\n");
mytranspose(a,b);
myprint(b);
return 0;}
5樓:2b丶xiao年輕
二維陣列指標 (*p)[3]
c語言中怎麼用二維陣列作為函式引數
6樓:我們最2的人
二維陣列作為函式引數,實參可以直接使用二維陣列名,在被呼叫函式中對形引數組定義可以指定所有維數的大小,也可以省略第一維的大**明,如:
它們是合法且等價,也可以使用如下形式:
但不能省略第二維的大小,如下面的定義是不合法的,編譯時會出錯:
因為從實參傳遞來的是陣列的起始地址,如果在形參中不說明列數,編譯器將無法定位元素的的位置。
7樓:韌勁
可以用二維陣列名作為實參或者形參,在被呼叫函式中對形引數組定義時可以指定所有維數的大小,也可以省略第一維的大**明,如:
void func(int array[3][10]);
void func(int array[10]);
二者都是合法而且等價,但是不能把第二維或者更高維的大小省略,如下面的定義是不合法的:
void func(int array);
因為從實參傳遞來的是陣列的起始地址,在記憶體中按陣列排列規則存放(按行存放),而並不區分行和列,如果在形參中不說明列數,則系統無法決定應為多少行多 少列,不能只指定一維而不指定第二維,下面寫法是錯誤的:
void func(int array[3]);實引數組維數可以大於形引數組,例如實引數組定義為:
void func(int array[3][10]);
而形引數組定義為:
int array[5][10];
這時形引數組只取實引數組的一部分,其餘部分不起作用。
對於陣列 int p[m][n];
如果要取p[i][j]的值(i>=0 && i p + i*n + j; void func(int array[3][10]); void func(int array[10]); 變為:void func(int **array, int m, int n); 在轉變後的函式中,array[i][j]這樣的式子是不對的(不信,大家可以試一下),因為編譯器不能正確的為它定址,所以我們需要模仿編譯器的行為把array[i][j]這樣的式子手工轉變為: *((int*)array + n*i + j); 在呼叫這樣的函式的時候,需要注意一下,如下面的例子: int a[3][3] = , ,};func(a, 3, 3); 根據不同編譯器不同的設定,可能出現warning 或者error,可以進行強制轉換如下呼叫: func((int**)a, 3, 3); 其實多維陣列和二維陣列原理是一樣的,大家可以自己擴充的多維陣列,這裡不再贅述。寫到這裡,我先向看了這篇文章後悔的人道歉,浪費你的時間了。下面是一 個完整的例子程式,這個例子程式的主要功能是求一個圖中某個頂點到其他頂點的最短路經,圖是以鄰接矩陣的形式存放的(也就是一個二維陣列),其實這個函式 也是挺有用的,但是我們這篇文章的重點在於將二維陣列作為函式的引數傳遞。 8樓:匿名使用者 很簡單的,陣列作為函式引數傳遞的時候只要是陣列名就可以了,因為陣列名本身就是陣列的首地址 .給個程式看看 #include #define n 3 int array[n][n]; void main() //呼叫矩陣轉置函式 convert(array); printf("\n"); for(i=0;i void convert(int array[3]) } 9樓:混世達人 建議這樣的專業語言問題,去qq群的c語言群去諮詢,那裡面有很多的高手。 10樓:匿名使用者 直接就寫陣列的名稱就可以了,比如你定義的陣列是a[4][3],在實參中填a就可以,在型參中定義一個二維陣列或一個指標變數就可以讓二維陣列的值在函式中使用了! 11樓:匿名使用者 可以用指標的形式表示,或者用二維陣列顯示錶示 c語言中如何將二維陣列作為函式的引數傳遞? 12樓:匿名使用者 函式原型 type fun (type (name*)[size])type是你要定義的型別,fun是函式名,name是在函式中二維陣列的名字, size是二維陣列第2維的長度。 這樣呼叫這個函式只需要把二維陣列函式名傳遞就可以了。 鄞臨婁溶溶 在c語言中可以用二維陣列作為實參或者形參。1 函式中用二維陣列作為形參,函式宣告中可以指定所有維數的大小,也可以省略第1維的維數如 void f int array 3 10 正確 void f int array 10 正確上面的兩種二維陣列形參表示都是正確的。2 函式中用二維陣列作為... 灩麗 1 首先我們開啟電腦裡的c語言軟體,新建一個工程和.c檔案,輸入標頭檔案和主函式。2 然後我們輸入圖示 初始化陣列,定義變數型別。3 然後我們輸入圖示 用for語句實現陣列的訪問。4 然後我們輸入圖示 進行輸出。5 然後我們輸入圖示 編譯 執行,即可通過二級指標來操作二維陣列。 小宇宙 倘若此... 1.指標完全可以作為函式的引數進行傳遞,其實在c中,陣列作為引數傳遞,跟指標作為引數傳遞都很類似的,指標傳的是該指標指向的地址,而陣列引數則是將該陣列的首地址傳遞過去。2.檔案指標 在c語言中用一個指標變數指向一個檔案,這個指標稱為檔案指標。通過檔案指標就可對它所指的檔案進行各種操作。定義說明檔案指...c語言中如何將二維陣列作為函式的引數傳遞
c語言中如何通過二級指標來操作二維陣列
c語言中檔案指標能不能作為引數傳遞