c語言矩陣轉置運用二維陣列和指標

時間 2021-08-11 17:49:43

1樓:

形參int (*a)[n]和int a[n]在編譯時都被解釋為“a是指向長度為n的一維陣列的指標”,所以函式體內的操作可以二者完全一樣。就是說如果你這個函式是正確的的話,把第一個形參改為int (*a)[n],其餘不變就是完全正確的。所以這沒有什麼新的意義,這裡就不費筆墨了。

至於改為形參int *a,那得稍費周折,因為int *a是個一級指標,不能接受二維陣列的全部資訊,要在函式中作點預處理;呼叫的地方也要做點處理。舉例如下:

#include "stdio.h"

#define n 10

void transpose(int *a,int n){int i,j,b[n][n],*p[n];

for(j=i=0;i

2樓:孤舟

#include "stdafx.h"

#include

using namespace std;

void input();

void output();

void sort();

int a[4][4];

int main()

void input()

void output()

cout << endl;}}

void sort()}

c語言(指標): 編寫一個函式實現n*n矩陣轉置。在主函式中用scanf輸入矩陣元素;將陣列名作為函式實參。

3樓:庫後濤

好吧,簡單說下:void fun( float a) }這個函式的侷限只限於方陣。也只能對上三角元素操作,是因為a陣列本身空間的限制,如果採用指標的話:

令p=a;其他注意是對內容**p之類操作即可。不過如果採用引入矩陣b來操作可以完美解決上述問題:

void fun( float a,float b) }最後如果非要用a輸出的話,可以用b 回代即可

c語言二維陣列問題

寫完以後我發現有點長,樓主給點耐心看,不懂我們再交流 a是整個二維陣列的首地址,short長度為2,sizeof a 2 5 5 50 a 1指向二維陣列的第二個元素,它僅僅是一個指標,如果在a 1前面加一個 號,就是第二個元素的值,即a 0 1 所以,a 1是一個指標,它指向二維陣列中的某個數,指...

C語言 有3 4的矩陣,要求編寫求這個二維陣列中的最大的那個元素的值,以及所在的行號和列號

迷茫的 這個不是很難吧 只要編寫兩個for迴圈,以第一個元素為max然後依次比較.如果發現比它大的數則交換max的值.直到沒有數比它大,則這個時候它就是這個二維陣列中的最大值了.這時候輸出它的行號和列號就行了. 矩陣的元素由鍵盤輸入?include void main maxpbuff maxpbu...

二維陣列名和指標的關係,C語言中陣列名和指標的區別

二維陣列名即陣列地址,指向首行地址,表面上看,行地址即一維陣列指標,而陣列名指向行就應該是指標的指標,但是必須注意指標也是有型別的,型別不同資料寬度也不同。如果a 10 10 假設int p a 那麼要對行遞增執行p 時,編譯器如何知道列寬?因為int 是指指向一個 int 型別的指標,32位系統中...