C++:使用变量的指针更改变量的值
C++: Change value of variable using its pointer
假设我有以下函数:
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 << " ";
}
}
实时
相关文章:
- 变量没有改变?通过向量的函数调用
- 在向量内更改变量的值不会改变其在向量外的值
- C++11:具有互斥锁的线程看到原子变量的值发生变化,尽管这是唯一可以改变它的代码
- 为什么我可以改变常量对象中的成员变量,这是返回常量对象函数的结果?
- 标准在哪里定义了可变变量可以改变
- C++11:可变的 lambda 似乎没有改变变量?
- printf() 似乎改变了一个变量
- 为什么我的变量在单独的线程中修改时没有改变?C++/boost
- 为什么 Player.x 和 Player.y 变量没有改变?
- C - 如何将各处的静态函数称为改变其私有变量
- 即使"friend class rect"在平方类中被评论,为什么它要改变矩形类的私有变量?
- 为什么调用 CUDA 内核函数时这个类成员变量没有改变
- 全局变量的顺序会改变C /OpenGL的性能
- 为什么一个函数的末尾有常量这个词,即使它确实改变了一个变量
- 如何在C++中改变超类和子类的变量
- 为什么变量不会改变
- 变量的范围大于for循环,为什么它不改变值
- 变量似乎在自行改变值
- 在一个case中改变switch变量
- 当赋值给变量时,数字改变值