请参阅下面的代码(和评论)。
我正在尝试制作array = newArray。
在C ++中执行此操作的正确语法是什么?
我试图将数组指向与 newArray 相同的内存位置在 memoryCopy()中,因此将 newArray 复制到数组中,而不必按照我的方式逐个元素地执行 deepcopy的()
#include <iostream>
using namespace std;
void deepCopy(int array[], int size);
void memoryCopy(int *array, int size);
void show(int array[], int size);
int main ()
{
int array[] = {1,1,1};
show(array,3); // shows array [] = {1,1,1}
deepCopy(array, 3);
show(array,3); // shows array [] = {0,0,0}
memoryCopy(array, 3);
show(array,3); // shows array [] = {5,0,0}
// I need the above to show {5, 5, 5} ^ ^
// How can I do this in memoryCopy() using pointers?
}
void memoryCopy(int *array, int size)
{
int newArray[] = {5,5,5};
// I need to make array = newArray ...
// ... but without copying it over element by element
memcpy(array,newArray, 3); // <--???
}
void deepCopy(int array[], int size)
{
int newArray [] = {0,0,0};
for (int i = 0; i < size; i++)
array[i] = newArray[i];
}
void show(int array[], int size)
{
int i;
cout << "array [] = {";
for (i = 0; i < size-1; i++)
cout << array[i] << ",";
cout << array[i] << "}" << endl;
}
答案 0 :(得分:1)
如果C ++ 11或更新版本可用,请使用std::array<T,N>
而不是C-Style数组。
例如:
std::array<int,3> my_array {1,1,1};
auto new_array=my_array; // deep copy
答案 1 :(得分:-2)
谢谢大家的快速回复! 非常有帮助,你太棒了!
以下是它的工作原理
void shallowCopy(int *array, int size)
{
int newArray[] = {5,5,5};
memcpy(array,newArray, 3*sizeof(int)); // <--WORKS
// thank you Manthan Tilva!
}