我的问题是,当我在函数中创建一个本地数组并返回它时,数组中的所有值都将分配给数组的第一个值。因此,举例来说,返回值为3,5,11,13的大小为4的数组。数组现在只有值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;
}
答案 0 :(得分:0)
尝试更改此行:
printf("values in array %d\n", *halfarray);
到此:
printf("values in array %d\n", *halfarray);
halfarray++
答案 1 :(得分:0)
在每次迭代时使用指针算法来递增非常量指针的位置,因此:
for (int i = 0; i < 4; i++, halfarray++) {
printf("values in array %d\n", *halfarray);
}