C++:使用变量的指针更改变量的值

C++: Change value of variable using its pointer

本文关键字:变量 改变 指针 C++      更新时间:2023-10-16

假设我有以下函数:

void part(T* arr){
//some function
int x[5] = {1,2,3,4,5};
arr = x;
}

其中原件:

int arr[5] = {0,0,0,0,0}

我想知道,如何将函数中原始arr的值更改为其他值(比如x)?

感谢

你很接近。

void part(T* arr){
   //some function
   int x = 5;
   *arr = x;
}

你只需要在arr前面加一个*,这意味着该指针指向的值。如果你只是说arr,那意味着你不想改变的实际地址。

看起来你在我写答案的时候改了问题。

在这种情况下,您需要一个循环。

void part(T* arr){
   //some function
   int x[5] = {1,2,3,4,5};
   for(int i = 0; i < 5; i++)
   {
      arr[i] = x[i];
   }
}

要实现这一点,您需要将元素从数组x复制到arr:

std::copy(x, x + sizeof(x) / sizeof(x[0]), arr);

但是,作为一般建议,不要使用原始指针来表示对象数组。您可以使用std::array,然后使用它的operator=来复制所有元素。

#include <iostream>
#include <array>
void part(std::array<int, 5>& arr)
{
    std::array<int, 5> x {{1, 2, 3, 4, 5}};
    arr = x;
}
int main()
{
    std::array<int, 5> arr;
    part(arr);
    for (const auto& val : arr) {
        std::cout << val << " ";
    }
}

实时