[問題] 雙重指標與二維陣列 for C

看板C_and_CPP作者 (得罪了方丈還想走)時間14年前 (2010/06/02 19:42), 編輯推噓2(201)
留言3則, 2人參與, 最新討論串1/1
遇到的問題: 二維陣列當引數,雙重指標當參數。 無法Working.... 希望得到的正確結果: 1.可以正確的使用二維陣列當引數。 2.可以正確的使用雙重陣列。 有問題的code: 1.二維陣列與雙重指標問題 2.假設問題1沒問題的話,這使用樣存取對嗎!? #ifdef PAL_QCIF #define Y_WIDTH 176 #define Y_HEIGHT 144 #define U_WIDTH 88 #define U_HEIGHT 72 #define V_WIDTH 88 #define V_HEIGHT 72 #endif #define IMAGE_AMOUNT 1 #include "ReadImage.h" unsigned char Y_space[Y_HEIGHT][Y_WIDTH]; unsigned char U_space[U_HEIGHT][U_WIDTH]; unsigned char V_space[V_HEIGHT][V_WIDTH]; int main(void) { int i; long DataStreamOrign; int BinarizedThreshold; for(i = 0, DataStreamOrign = 0; i < IMAGE_AMOUNT; i++, DataStreamOrign += (Y_WIDTH*Y_HEIGHT + U_WIDTH*U_HEIGHT + V_WIDTH*V_HEIGHT)){ ReadImage(Y_space, Y_WIDTH, Y_HEIGHT, DataStreamOrign); } system("PAUSE"); return 0; } --------------------------ReadImage.h------------------------- extern void ReadImage(unsigned char **, int, int, long); --------------------------ReadImage.c----------------------- #include <stdio.h> #include "ReadImage.h" void ReadImage(unsigned char **pImage, int nWidth, int nHeight, long DataStreamOffset) { int i, j; FILE *fp = 0; if(fp = fopen("C:\\VC06022010\\1.yuv", "rb")){ fseek(fp, DataStreamOffset, SEEK_SET); for(i = 1; i < nHeight; i++) for(j = 1; j < nWidth; j++){ fread( *(pImage + i) + j , 1, 1, fp); } } else printf("Open the file was failed!"); fclose(fp); return; } 開發平台: VC++、Dec C++ 程式跑出來的錯誤結果 argument of type "unsigned char( * )[176] is incompatible with parameter of typ "unsigned char **" 補充說明: 抱歉,新手上路。 除了上述問題之外如果在寫作方式上有何不妥也多多指教。 謝謝!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 210.240.245.74

06/02 19:59, , 1F
void ReadImage(unsigned char [][Y_WIDTH],int,int,
06/02 19:59, 1F

06/02 20:00, , 2F
long);
06/02 20:00, 2F
感謝d大:加上上述的原型宣告即可。

06/03 00:14, , 3F
綠色那邊會不會怪怪的 ! 試試看 *米(米(pImage+i)+j)
06/03 00:14, 3F
感謝s大:這樣變成取值,所以還是要用*(pImage + i)+j給址。 ※ 編輯: MaconChou 來自: 219.84.61.250 (06/05 05:21)
文章代碼(AID): #1C1aEzGZ (C_and_CPP)