C - 返回的数组仅使用第一个值填充数组

时间:2017-02-17 03:12:25

标签: c arrays

我的问题是,当我在函数中创建一个本地数组并返回它时,数组中的所有值都将分配给数组的第一个值。因此,举例来说,返回值为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;
}

2 个答案:

答案 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);

}