在 C++ 函数中更新数组(作为参数传递)

Updating an array (passed as parameter) inside a C++ function

我有以下声明和函数调用:

unsigned int myArray[5] = {0, 0, 0, 0, 0};
ModifyArray(&myArray[0]);

以上代码无法修改,按原样给出。

我需要编写 ModifyArray 的实现来更新 myArray 以包含 1、2、3、4、5。

我写成:

void ModifyArray(unsigned int * out_buffer) 
{
  unsigned int updatedValues[5] = {0, 0, 0, 0, 0};
  updatedValues[0] = 1;
  updatedValues[1] = 2;
  updatedValues[2] = 3;
  updatedValues[3] = 4;
  updatedValues[4] = 5;
  *out_buffer = &updatedValues;
}

这似乎并不奏效。我感觉我在代码的最后一行没有正确地进行赋值,但是我尝试了多种变体,但它似乎仍然没有只更新数组的元素 0。

我做错了什么?谢谢!

P.S.: 请注意,场景比此处介绍的要复杂。为了便于阅读,我进行了简化,但代码看起来应该与此非常相似,如果可能的话,应该将最后一个分配更新为正确的分配。

*out_buffer 是一个 unsigned int.
&updatedValues 是一个 unsigned int(*)[5] - 指向五个元素数组的指针 - 你不能将其分配给 int.

你不应该分配任何数组(这是不可能的),你应该修改给定数组的内容:

void ModifyArray(unsigned int *out_buffer) 
{
    out_buffer[0] = 1;
    out_buffer[1] = 2;
    out_buffer[2] = 3;
    out_buffer[3] = 4;
    out_buffer[4] = 5;
}

你可以简化为

void ModifyArray(unsigned int *out_buffer) 
{
    for (int i = 0; i < 5; i++)
    {
        out_buffer[i] = i+1;
    }
}