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

时间:2015-11-29 14:18:27

标签: c++ pointers

让我们说我有以下功能:

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)?

由于

2 个答案:

答案 0 :(得分:1)

你很亲密。

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];
   }
}

答案 1 :(得分:1)

要实现此目的,您需要将数组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 << " ";
    }

}

LIVE