2011-10-24 8 views

答えて

14
あなたは <string.h>で宣言されたあなたは memcpy()機能でそれらをコピーすることができますC.に配列、割り当てることができません

:これはストレートだっ

int a[3]; 
int b[] = {1,2,3}; 

memcpy(&a, &b, sizeof a); 
+1

これは、私が検索したものです。 – Starfighter911

+1

@Jonathan Leffler: '&array'は意図的な選択です。一つのオブジェクト(ここでは一つの配列)をコピーするとき、' memcpy(&dest、&src、sizeof src)彼らは同じでなければなりません)。これは一貫性のためです。 'a'と' b'の型が非配列型の場合、同じ 'memcpy()'行が動作します。あなたは同意しないかもしれませんが、うまくいけば、選択の裏に確かに「判断」があることが分かります。 – caf

+0

は、 '&a'は配列へのポインタへのポインタではありませんか? – weberc2

14

...私は、ポインタを使用することができます知っているが、私はそのようにやってみたい

int a[]; 
int b[] = {1,2,3}; 
&a = &b; 

を。 Cで配列を割り当てることはできません。

構造体は割り当て可能です。だから、これを行うことができます。

typedef struct 
{ 
    int x[3]; 
} T; 

T a; 
T b = { { 1, 2, 3 } }; 

a = b; 
+0

おかげで、任意の関数がありますこの仕事をしているので、たくさんのコードを書き直す必要はありません。 – Starfighter911

+1

'a = b'はどのように「たくさんのコード」ですか? –

+0

さて、私はこれを試しました:'T a []; T b [] = {{1,2,3}}; a = b; '、まだ動作していません。出力: "式は左辺値ではありません"。 – Starfighter911

関連する問題