我在C++中复制一个数组,这里是代码:
int arr1[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
int *source = arr1;
size_t sz = sizeof(arr1) / sizeof(*arr1); // number of elements
int *dest = new int[sz]; // uninitialized elements
while (source != arr1 + sz)
*dest++ = *source++; // copy element and increment pointers
int *p = dest;
while (p != dest + sz) {
cout << *p++ << endl;
}
Run Code Online (Sandbox Code Playgroud)
运行上述代码后,我得到了:
714124054
51734
9647968
9639960
0
0
0
0
0
0
Run Code Online (Sandbox Code Playgroud)
有什么麻烦?
但是,正确地复制数组,通过递增,dest您将失去实际开始.
你需要保留一个destto循环的副本.分配后也不要忘记释放内存.
最后,在C++中,您可能希望使用std::vector而不是以透明方式执行所有这些操作的数组,同时交换最低性能.
int arr1[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
int *source = arr1;
size_t sz = sizeof(arr1) / sizeof(*arr1); // number of elements
int *dest = new int[sz]; // uninitialized elements
int *d = dest;
while (source != arr1 + sz)
*d++ = *source++; // copy element and increment pointers
int *p = dest;
while (p != dest + sz) {
cout << *p++ << endl;
}
[...]
delete[] dest;
Run Code Online (Sandbox Code Playgroud)