[解決済み】なぜか。"エラー: 配列型を持つ式への代入"
2022-02-13 20:47:10
質問
#include <stdio.h>
int main(void) {
int arr[10];
arr = "Hello";
printf("%s",arr);
return 0;
}
上記のコードでは、コンパイラーエラーが発生します。
t.c: In function ‘main’:
t.c:5:9: error: assignment to expression with array type
arr = "Hello";
^
t.c:6:12: warning: format ‘%s’ expects argument of type ‘char *’, but argument 2 has type ‘int *’ [-Wformat=]
printf("%s",arr);
^
一方、以下のコードでは正常に動作します。
#include <stdio.h>
int main(void) {
char arr[10] = "Hello";
printf("%s",arr);
return 0;
}
私にはどちらも同じに見えます。何か見落としているのでしょうか?
解決方法は?
それらは ではない を同一とする。
まず第一に、このような方法で
int
を文字列リテラルで配列化し、最悪の場合は
未定義の動作
ポインタから整数への変換とその変換結果の有効性は、プラットフォーム固有の動作であるためです。この点で、両方のスニペットは無効です。
次に、データ型を修正するために
char
配列が使用されます。
関連
-
[解決済み] strtokのセグメンテーションフォールト
-
[解決済み】C 未知の型名「my_structure」。
-
[解決済み】C言語で入力が整数型かどうかチェックする
-
[解決済み] JavaScriptの配列で一意な値をすべて取得する(重複を排除する)。
-
[解決済み] 配列の反復処理に "for...in "を使用するのは、なぜ良くないのでしょうか?
-
[解決済み] 配列の場合、なぜ a[5] == 5[a] になるのでしょうか?
-
[解決済み] 配列の最後の項目を取得する
-
[解決済み] 新しい配列を作成せずに、既存のJavaScript配列を別の配列で拡張する方法
-
[解決済み] 配列の最初の要素を取得する
-
[解決済み】なぜJavaの+=, -=, *=, /=複合代入演算子はキャスティングを必要としないのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Valgrind が "Invalid write of size 8" で文句を言う。
-
[解決済み】C言語で「関数の型が競合しています」と表示される、なぜ?
-
[解決済み】Cコンパイルエラーです。Idは1終了ステータスを返した
-
[解決済み】 `S_ISREG()` とは何ですか、そして何をするのですか?
-
[解決済み】 error: too few arguments to function `printDay' (C言語)
-
[解決済み】C言語で浮動小数点例外(コアダンプ)発生
-
[解決済み】Cygwin - Makefile-error: ターゲット `main.o' のレシピに失敗しました。
-
[解決済み】サイズ8の無効な読み取り - Valgrind + C
-
[解決済み】sizeof float (3.0) vs (3.0f)
-
[解決済み】インクリメントオペランドとして lvalue が必要です。