Re: [問題] 二維陣列回傳問題
matrix是一個 3x3矩陣
在傳參數的時候是不可以傳陣列的,所以他會decay成 int(*)[3]
( pointer to int [3] )
我的第一個疑問點是
直接把這個 int (*)[3] 變成 int ** ,這我怎麼看都覺得很奇怪阿
第二個疑問點是
你的receive是個 int *[3] ,可是他卻要接一個 int **,這我還是覺得很奇怪阿 Orz
( array containing int* )
第三個點是
int(*)[3] 和 int*[3] 都不能拿來回傳,可是你拿 int** 回傳我反而不懂這是什麼意思
我完全搞混於大大的design,所以才想說有沒有考慮換一個方式
int(*)[3] 和 int*[3] 是不一樣的
我的意思是,為何不把你把main那邊的設計改掉呢 :)
看receive是要接什麼工作你手動去做一下 (跑迴圈或是改用其他型態等等的)
Ex:
void matrix_add(int (*)[3],int);
main()
{
int a,b;
int *receive[3]; // todo
int matrix[3][3]={{0},{0},{0}};
for(b=0;b<3;b++)
{
printf("add:\n");
scanf("%d",&a);
matrix_add(matrix,a);
... // todo
※ 引述《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;
: }
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.113.93.39
推
05/28 21:08, , 1F
05/28 21:08, 1F
→
06/04 21:31, , 2F
06/04 21:31, 2F
→
06/04 21:31, , 3F
06/04 21:31, 3F
討論串 (同標題文章)