C語言定義形參為二維陣列行指標的函式,實現將所指向的陣列所有元素乘以5的功能

2021-03-18 15:32:19 字數 2582 閱讀 8790

1樓:匿名使用者

/*處理前:

0  1  2  3  4  5

4  5  6  7  8  9

8  9 10 11 12 13

12 13 14 15 16 17

處理後:

0  5 10 15 20 25

20 25 30 35 40 45

40 45 50 55 60 65

60 65 70 75 80 85

press any key to continue*/#include

#include

#define rows 4

#define columns 6

void fun(int **a,int m,int n)void show(int **a,int m,int n)}int main()

2樓:老粽子吉吉

int *a[size1][size2]

int i,j;

for(i=0;i

c語言中怎麼用二維陣列作為函式引數

3樓:我們最2的人

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

它們是合法且等價,也可以使用如下形式:

但不能省略第二維的大小,如下面的定義是不合法的,編譯時會出錯:

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

4樓:韌勁

可以用二維陣列名作為實參或者形參,在被呼叫函式中對形引數組定義時可以指定所有維數的大小,也可以省略第一維的大**明,如:

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);

其實多維陣列和二維陣列原理是一樣的,大家可以自己擴充的多維陣列,這裡不再贅述。寫到這裡,我先向看了這篇文章後悔的人道歉,浪費你的時間了。下面是一 個完整的例子程式,這個例子程式的主要功能是求一個圖中某個頂點到其他頂點的最短路經,圖是以鄰接矩陣的形式存放的(也就是一個二維陣列),其實這個函式 也是挺有用的,但是我們這篇文章的重點在於將二維陣列作為函式的引數傳遞。

5樓:匿名使用者

很簡單的,陣列作為函式引數傳遞的時候只要是陣列名就可以了,因為陣列名本身就是陣列的首地址 .給個程式看看

#include

#define n 3

int array[n][n];

void main()

//呼叫矩陣轉置函式

convert(array);

printf("\n");

for(i=0;i

void convert(int array[3]) }

6樓:混世達人

建議這樣的專業語言問題,去**群的c語言群去諮詢,那裡面有很多的高手。

7樓:匿名使用者

直接就寫陣列的名稱就可以了,比如你定義的陣列是a[4][3],在實參中填a就可以,在型參中定義一個二維陣列或一個指標變數就可以讓二維陣列的值在函式中使用了!

8樓:匿名使用者

可以用指標的形式表示,或者用二維陣列顯示錶示

二維陣列與指標,二維陣列a的「列指標」與「行指標」有什麼聯絡

int m 可以分步驟來理解 m意思是引用這個整型數,m代表指向這個整型數的指標,m代表指向 m的指標,也就是傳說中指向指標的指標 一般情況下形參為指標型別時,可以傳送陣列名作為實參,也即陣列的起始地址,二維陣列的可以看成是多個一維陣列組成的 用這種二維指標是不能操作這種二維陣列的,二維指標就是指標...

c語言二維陣列迴圈賦值,C語言二維陣列迴圈賦值

這個只是陣列值的大小和行列的關係而已 就代表改數的值等於所在行數的4倍加所在列數加1 c語言中怎樣實現對二維陣列元素進行賦值並輸出。可以按照下面步驟進行定義二維陣列並輸出 1 定義二維指標。2 確定內陣列維數,即行數容和列數。3 申請行數個一維指標大小空間,並賦值給二維指標。4 對於每個一維指,申請...

c語言中如何定義二維陣列,C語言中如何定義一個二維陣列

int a 2 3 a 0 0 a 0 1 a 0 2 a 1 0 a 1 1 a 1 2 表示兩行三列 include main int i,j,total 0 for i 0 i 3 i printf n printf total d n total 用指標new出來 二維陣列定義必須規定列 i...