看板 C_and_CPP 關於我們 聯絡資訊
我想請問一下 二維陣列回傳到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; } --
KYOROD: Λ_Λ03/25 20:32
newmatt: 咻 ー <丶‵∀′> 路過,大家繼續03/25 20:34
idolater:  =〔~∪ ̄ ̄〕03/25 20:46
wrather: = ◎──◎03/25 20:54
jeffqoo2002:路路路路路路路路路路路路路 路路路路路路路路X03/25 20:57
yokinyokin:路路路路路路路路路路路路路 陸路陸路陸路陸03/25 21:04
-- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.123.28.236
nowar100:你的函式中直接就有改到mat陣列啦,幹嗎還要回傳 @_@? 05/28 20:25
nowar100:不是都已經當參數拿過去改了嗎 05/28 20:25
※ 編輯: jack58 來自: 140.123.28.236 (05/28 20:29)
jack58:因為receive要用 05/28 20:30
nowar100:題外話: 我的意思是說何不改變一下設計 05/28 20:31
VictorTom:那就把function的回傳型態改成 int (*)[3] 這樣吧XD 05/28 20:34
nowar100:待強者解吧,無意冒犯,但我覺得這種回傳法很彆扭... 05/28 20:34
nowar100:參數傳進去int(*)[3] 又要轉成int**回傳 最後再用int*[3] 05/28 20:35
nowar100:接 為什麼不直接操作就好了 XD 05/28 20:35
nowar100:而且int(*)[3]轉成int** 操作上會有問題吧 @_@ 05/28 20:36
jack58:我會這樣寫是因為我另有用途 這樣寫只是測試看看而已 :p 05/28 20:37
jack58:如果要修改是把副函式中的 int** 改成 int *[3] ? 05/28 20:40
jack58:我是希望測試呼叫韓式回傳二維陣列位置 所以這樣寫 05/28 20:41
nowar100:int[3][3]應該是變成int(*)[3] 不是int*[3] 我試試 05/28 20:43
james732:二維陣列並不是 int ** 05/28 20:46
jack58:?? 05/28 20:49
VictorTom:剛沒看到 receive 的type, 那我說的那樣不行.... 05/28 20:51
james732:如果你一定要這麼寫的話 return (int **)mat; 就解決了 05/28 20:51
VictorTom:只是, receive 是 3個 int*, 原po這樣寫肯定compile不會 05/28 20:51
VictorTom:過的, 你的 receive 到底是要用來幹麻的呀?_? 05/28 20:52
jack58:receive是接傳回來的位置用的 還是我想錯了@@? 05/28 20:54
jack58:我想用receive來接matrix_add傳回來的位置 不知是否想錯了? 05/28 20:56
VictorTom:實測的結果, int (*)[3] 不能當return type, 很直覺的以 05/28 20:58
VictorTom:為可以當傳入參數就可以當回傳參數的....Orz 05/28 20:58
rocmewtwo:可以試試看用int**宣告動態配置陣列>_< 05/28 21:57