看板 C_and_CPP 關於我們 聯絡資訊
TWOARRAY 是一個 function, return 一個 pointer, 這個 pointer 指向 int[4] int (* TWOARRAY(void) ) [4] { //int **ptr2=(int**)malloc(3*sizeof(int*)); static int number[3][4]={{1,2,3,4}, {5,6,7,8}, {9,10,11,12}}; return number; } 這個寫法太複雜, 可以用 typedef typedef int (*ARRAY2)[4]; ARRAY2 TWOARRAY(void) { } 這樣比較容易理解。 ※ 引述《SST2000 (BMW 428i)》之銘言: : 各位C語言的強者 : 請問一下,我想要用C語言的函式回傳一個二維陣列 : 但是不管我怎麼改,雖然可以執行正確但是就是會有警告 : 的訊息發生 : 請問我哪邊需要強制轉換或是修正呢??? : int * TWOARRAY(void); : int main(int argc, char **argv) : { : int (*twoarr)[4]=TWOARRAY(); : for(int x=0;x<3;x++) : { : for(int y=0;y<4;y++) : { : printf("%d ",*(*(twoarr+x)+y)); : } : printf("\n"); : } : return 0; : } : int *TWOARRAY(void) : { : //int **ptr2=(int**)malloc(3*sizeof(int*)); : static int number[3][4]={{1,2,3,4}, : {5,6,7,8}, : {9,10,11,12}}; : return number; : } : 編譯之後出現警告訊息 : initialization from incompatible pointer type -- 要有一流的運氣, 才能邂逅一流的美女。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.218.53.138 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1607396356.A.8BA.html
nh60211as: 推這篇 12/08 14:31
wudidog: 應該不是太複雜 是太不直覺 因為陣列方括號得在名稱之後 12/09 12:29
jk842323: 推 12/09 21:49