[問題] 二維陣列函數問題

看板C_and_CPP (C/C++)作者 (唷)時間16年前 (2009/10/23 14:05), 編輯推噓2(204)
留言6則, 3人參與, 最新討論串1/1
我知道我有一個函數func(int* array),array 是一個二維矩陣, 可是我無法去修改函數內容, 想要將該陣列取出, 所以寫了下面程式測試, 卻發現取出完全不相同的東西, 還有請版上的高手開導一下, 感恩 開發平台: dev C++ 測資輸入: #include <stdio.h> #include <stdlib.h> void func(int*); int matrix[3][3]={{14,23,42}, {23,423,14}, {34,34,53,}}; int main(void) { int *ptr; int i, j; ptr=(int*)malloc(sizeof(int)*3*3); func(ptr); for(i=0;i<3;i++) { for(j=0;j<3;j++) printf("ptr[%d*3+%d]=%d\n",i,j,*(ptr+i*3+j)); } free(ptr); system("pause"); return 0; } void func(int* array) { int i, j; array=(int*)malloc(sizeof(int)*3*3); for(i=0;i<3;i++) { for(j=0;j<3;j++) { array[i*3+j]=matrix[i][j]; printf("array[%d*3+%d]=%d\n",i,j,*(array+i*3+j)); } } return; } 輸出結果: array{0*3*0]=14 array[0*3*1]=23 . . . . . ptr[0*3*0]=4064384 ptr[0*3*1]=4064384 . . . 補充說明: 只是用ptr去取代array 為何輸出結果會不相同呢?? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.110.200.124

10/23 14:36, , 1F
因為 array=(int*)malloc(sizeof(int)*3*3);
10/23 14:36, 1F

10/23 14:36, , 2F
所以 ptr 和 array所指向的位置並不相同
10/23 14:36, 2F

10/23 14:37, , 3F
如果想要得到相同的東西 請拿掉上面那行
10/23 14:37, 3F

10/23 14:45, , 4F
感覺你觀念有根本的錯誤耶 為啥你會想再function內再malloc
10/23 14:45, 4F

10/23 14:45, , 5F
一次? 不是說指標要用就一定要配置空間阿@@
10/23 14:45, 5F

10/23 15:43, , 6F
感謝兩位指導 已解決
10/23 15:43, 6F
文章代碼(AID): #1AuKV1Lc (C_and_CPP)
文章代碼(AID): #1AuKV1Lc (C_and_CPP)