2
我遇到了一個最終函數的問題。我的目標是太照顧一張照片。 我宣佈在頭:C函數正在返回數組和指針,但沒有投射
#define PICTURESIZE 1024
typedef unsigned char Picture[PICTURESIZE][PICTURESIZE];
typedef unsigned char LinearBlocPicture[PICTURESIZE*PICTURESIZE];
我包括在其他文件中,在那裏我只得到了一個功能這個頭:
LinearBlocPicture picture2BlocVector (Picture image){
LinearBlocPicture pictureModify;
int curseurLinearBlocPicture = 0;
unsigned char blocPixel[8][8];
unsigned char* bufferLinearBlocPicture;
int x,y,i,j,k;
for(y=0; y < 1024; y=y+8) {
for(x=0; x < 1024; x=x+8) {
for(j=0; j < 8; j++) {
for(i=0; i<8; i++) {
blocPixel[i][j] = image[x+i][y+j];
}
}
bufferLinearBlocPicture = bloc2Vector (blocPixel);
for (k=0; k<64; k++){
pictureModify[curseurLinearBlocPicture+k] = bufferLinearBlocPicture[k];
}
curseurLinearBlocPicture = curseurLinearBlocPicture + 64;
}
}
return pictureModify;
}
此功能適用於我的治療,問題來自於返回值,預計會有什麼回報。 我得到這個當我嘗試compilate:
First line error: ‘picture2BlocVector’ declared as function returning an array
Application.c: In function ‘picture2BlocVector’:
Last line: warning: return makes integer from pointer without a cast
Last line: warning: function returns address of local variable
我不明白爲什麼沒有爲返回類型的問題,因爲我正確宣告我喜歡的類型LinearBlocPicture。指針問題來自這條線我認爲:
pictureModify[curseurLinearBlocPicture+k] = bufferLinearBlocPicture[k];
我不確定可以這樣做。 感謝您的幫助。
不,你不能用C這樣做。將結果聲明爲一個指針,在你的函數中分配並返回。 – OldProgrammer