让我们说我有以下功能:
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
)?
由于
答案 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 << " ";
}
}