web-dev-qa-db-ja.com

char配列にCで値を割り当てる

違いは何ですか:

char fast_car[15]="Bugatti";

そして

char fast_car[15];
fast_car="Bugatti";

2番目の結果はコンパイルエラーになるため:

エラー:タイプ「char *」からタイプ「char [15]」に割り当てるときに互換性のないタイプ

最初のものはうまく機能しますが。配列の初期化とは異なる場所にある配列に文字列を配置すると便利です。

9
hardpenguin

1つ目は初期化で、2つ目は割り当てです。 Cでは配列は変更可能な値ではないため、新しい値を配列に割り当てることはできません。

念のために言っておきますが、配列の内容を変更できますfast_car = ...とは言えません。したがって、内容は変更可能です配列自体は変更できません


これらの大きく異なる概念に同じ記号=を使用することは、議論の余地のある価値があります。

10
cnicutar
char fast_car[15]="Bugatti";

Fast_carは配列であり、文字列「Buratti」で初期化されると書かれています。正しい使用法:

char fast_car[15];
fast_car="Bugatti";

最初の行はchar配列の宣言です(初期化されていません)。次に、ここでのfast_carは、このchar配列の最初の要素のアドレス(ポインター)にすぎません。文字「Buratti」の配列へのポインタfast_carの割り当ては、値のタイプの違いによって正しくありません。

4
ducanhng