Re: [問題] 二維陣列回傳問題

看板C_and_CPP作者 (願主陪著你)時間14年前 (2010/05/28 21:04), 編輯推噓6(607)
留言13則, 5人參與, 最新討論串3/3 (看更多)
※ 引述《jack58 (願主陪著你)》之銘言: : 我想請問一下 二維陣列回傳到main function中要如何回傳? : 我一直嘗試一個二維的回傳都會產生下列問題 : error: cannot convert 'int (*)[3]' to 'int**' : 以下是我嘗試的小程式 : #include<stdio.h> : #include <stdlib.h> : #include<math.h> : #include<time.h> : int **matrix_add(int *[3],int); : main() : { : int a,b; : int *receive[3]; : int matrix[3][3]={{0},{0},{0}}; : for(b=0;b<3;b++) : { : printf("add:\n"); : scanf("%d",&a); : receive=matrix_add(matrix,a); : printf(" %d %d %d \n",receive[0][0],receive[1][0],receive[2][0]); : } : } : int **matrix_add(int *mat[3],int value) : { : int i,k; : for(k=0;k<3;k++) : { : for(i=0;i<3;i++) : { : *(*(mat+i)+k)=*(*(mat+i)+k)+value; : } : } : return mat; : } 以下是一維的陣列計算 是可以compile過的 可是上面那一篇我希望嘗試二維陣列回傳位置的話就會錯~ 所以我的問題因該是卡在怎麼表示副函式回傳位置的形式式正確的? @@+ #include<stdio.h> #include <stdlib.h> #include<math.h> #include<time.h> int *matrix_add(int *,int); main() { int a,b; int *receive; int matrix[3]={0,0,0}; for(b=0;b<3;b++) { printf("add:\n"); scanf("%d",&a); receive=matrix_add(matrix,a); printf(" %d %d %d \n",receive[0],receive[1],receive[2]); } } int *matrix_add(int *mat,int value) { int i,k; for(i=0;i<3;i++) { *(mat+i)=*(mat+i)+value; } return mat; } --

04/09 10:44,
多的是歷史學家研究這個~耶穌是在神殿外被講道之人吸
04/09 10:44

04/09 10:45,
覽啪
04/09 10:45

04/09 10:45,
引進而開啟他的宗教思維~這也是早就研究出來的
04/09 10:45

04/09 10:46,
口交娃
04/09 10:46

04/09 10:46,
樓上的~你很噁心~沒品~無聊
04/09 10:46
-- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.123.28.236

05/28 21:05, , 1F
int [3] 可以直接 decay 成 int * 但是 int [3][3] 不能
05/28 21:05, 1F

05/28 21:06, , 2F
直接變成 int ** 阿,不然存取的位置他怎麼知道要隔多遠
05/28 21:06, 2F

05/28 21:08, , 3F
@@ 所以果然是我想錯了= =
05/28 21:08, 3F

05/28 21:10, , 4F
那請問如果想回傳一個二維陣列的位置怎麼寫比較合適?
05/28 21:10, 4F

05/28 21:14, , 5F
int (*result)[3]; result=matrix; 這樣就是matrix的位
05/28 21:14, 5F

05/28 21:14, , 6F
置啦,不過function return應該是不能用int(*)[3] ,至
05/28 21:14, 6F

05/28 21:15, , 7F
少我試不出來
05/28 21:15, 7F

05/28 21:16, , 8F
typedef 不行嗎?
05/28 21:16, 8F

05/28 21:26, , 9F
不知道這樣行不行? http://tinyurl.com/39l6dbp
05/28 21:26, 9F

05/28 21:30, , 10F
Good! 這招不錯
05/28 21:30, 10F

05/28 21:41, , 11F
argArray 的型態也可以改成 ArrayPointerType ~ 0.0
05/28 21:41, 11F

05/28 22:02, , 12F
慘~~剛剛怎樣都拼不出該怎麼typedef這個type....Orz
05/28 22:02, 12F

05/28 22:23, , 13F
int (*f())[3] {...}這樣 不過用typedef會好看很多就是
05/28 22:23, 13F
文章代碼(AID): #1B_xzQIP (C_and_CPP)
文章代碼(AID): #1B_xzQIP (C_and_CPP)