我的问题是,当我在函数中创建一个本地数组并返回它时,数组中的所有值都被分配给数组的第一个值。因此,例如,返回值为3,5,11,13的大小为4的数组。该数组现在只有值3,3,3,3.我是相当新的编码,所以任何帮助,将不胜感激。C - 返回的数组只填充第一个数组
uint8_t* half(const uint8_t array[],
unsigned int cols,
unsigned int rows)
{
int size = (cols/2) * (rows/2);
uint8_t *newarray = malloc(size * sizeof(int));
float average;
for (int i = 0; i < (rows/2); i++) {
for (int k = 0; k < (cols/2); k++) {
average = (array[ (2*k) + (2*i*cols) ] + array[ ((2*k) + 1) + (2*i*cols) ] + array[ ((2*k) + 1) + ((2*i*cols) + cols) ] + array[ (2*k) + ((2*i*cols) + cols) ])/4.0;
newarray[k + (i * (cols/2))] = (int)(round(average));
}
}
return newarray;
}
int main() {
uint8_t *halfarray;
halfarray = half(testarray, test_width, test_height);
for (int i = 0; i < 4; i++) {
printf("values in array %d\n", *halfarray);
}
return 0;
}
您只打印第一个元素。 'printf(“array%d \ n”,* halfarray);' - >'printf(“value%d \ n”,halfarray [i]);' – kaylum
哦,这是有道理的。 – Daniel
好吧,它的工作原理,谢谢大声笑。 – Daniel