2012-03-16 17 views
0

さて、私は構造体の構造体の構造体を持っています... 他のすべての系列を割り当てることなく、すべてのデータを含む構造体全体を新しいものにコピーする方法はありますか構造体?Cに割り当てられた構造体をコピーする

答えて

3

はい、ちょうど割り当てる:

MyStruct a; 
MyStruct b; 

... 

a = b; 

これは実行浅いコピー。いずれかの構造体にポインタが含まれている場合は、ポインターだけがコピーされ、ポインタはコピーされません。 ディープコピーが必要な場合は、独自のルーチンを作成する必要があります。

+0

+1。ただし、環境によっては単純な割り当てでは不十分な場合があります。コンパイラの中には 'memcpy'を文字通り呼び出すものがあるので、あなたの環境でそのシンボルが定義されていない(あるいは奇妙なセマンティクスがある)場合は、困っているかもしれません。 –

+0

@CarlNorum:それは上記がC89であることを考えると、非常に面倒です。 –

+0

これは実際には非常に面倒ですが、残念なことに本物です。 –

関連する問題