2016-05-20 4 views
-4

以下のコード(およびコメント)を参照してください。
私はarray = newArrayを作成しようとしています。
C++でこれを行う正しい構文は何ですか?

memoryCopy()
NEWARRAYは、このように私がしたように要素ごとのそれをすることなく、アレイ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

を働いていた方法です。 –

+0

?私が必要とするのは、これを行う構文の例です。 – nulldreamer

+0

'memcpy(array、newArray、3 * sizeof(int));'で確認できますか? –

答えて

1

C++ 11以降が利用可能である場合には、代わりにCスタイルの配列のstd::array<T,N>を使用します。 例:

std::array<int,3> my_array {1,1,1}; 
auto new_array=my_array; // deep copy 
-2

ありがとうございました! そんなに早く助けてくれるので、あなたは素晴らしいです!以下は

は、それは `のstd ::コピーを()`を使用し

void shallowCopy(int *array, int size) 
{ 
    int newArray[] = {5,5,5}; 
    memcpy(array,newArray, 3*sizeof(int)); // <--WORKS 
    // thank you Manthan Tilva! 
} 
+0

ローカルアレイにコピーしていますが、それはどのように便利ですか? –

+0

C++の関数で配列をコピーする方法を理解しようとしています。その構文がわからなかった。あなたの答えをありがとう! – nulldreamer

関連する問題