5

私は次のコードを持っています。

struct rectangle {
int length;
int breadth;
};

int main (void) 
{
    struct rectangle a,b;
    a.length = 10;
    a.breadth = 5;

    b=a;  
    printf("\nValues of b.length = %d, b.breadth=%d\n",b.length,b.breadth);
    return 0;
}

上記の割り当ては有効なステートメントですか?(b = a)プロジェクト内でこのように行いました。このタイプの割り当ては間違っているので、使用済みのmemcpyを実行する必要があるというレビューコメントを受け取りました。bの値を出力して確認しました。値は正しいです。上記の割り当てがなぜ間違っているのか疑問に思いましたか?間違っている場合、構造体変数を関数に渡し、それを別の変数でキャッチするとどうなりますか?私の質問がはっきりしていることを願っています。質問が不明な場合は、ご連絡ください。

4

3 に答える 3

0

あなたの同僚はおそらく、割り当てステートメントが無効な配列について考えています。

配列と構造体は両方とも集計としてグループ化されるため、構造体型の変数にも同じ制限が適用されると彼は考えたかもしれません。

ただし、この割り当ては C と同じですが、memcpy必ずしも C++ とは限らないことに注意してください (POD タイプの場合も同じです)。これは、コーディング標準が禁止する十分な理由である可能性があります。その場合、会社のコーディング標準に従う必要があります。

于 2012-07-11T22:23:41.620 に答える