我的问题是,当我在函数中创建本地数组并返回它时,数组中的所有值都会分配给数组的第一个值。例如,返回一个大小为 4、值为 3、5、11、13 的数组。该数组现在只有值 3, 3, 3, 3。我对编码相当陌生,因此我们将不胜感激。
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("values in array %d\n", *halfarray);
对此:
printf("values in array %d\n", *halfarray);
halfarray++
关于C - 返回的数组仅用第一个值填充数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42288725/