[解決済み] char *arrayとchar array[]
質問
と書くと
char *array = "One good thing about music";
実際に配列を作ると?つまり、これと同じこと?
char array[] = {"One", "good", "thing", "about", "music"};
解決方法は?
宣言と初期化
char *array = "One good thing about music";
ポインタを宣言しています。
array
で、31文字の定数配列を指すようにします。
宣言と初期化
char array[] = "One, good, thing, about, music";
は、31文字を含む文字の配列を宣言しています。
そうそう、配列の大きさは、終端である
'\0'
文字を使用します。
メモリに並べると、1つ目はこんな感じでしょうか。
+-------+ +------------------------------+ | 配列| --> | "音楽の良いところをひとつだけ" |。 +-------+ +------------------------------+
そして、2番目はこんな感じ。
+------------------------------+ | "音楽の良いところを一つ" |。 +------------------------------+
配列は、配列の最初の要素へのポインタに分解されます。のような配列があった場合
char array[] = "One, good, thing, about, music";
を使用した場合、プレーンな
array
ポインタが期待されるときは
&array[0]
.
つまり、例えば関数の引数に配列を渡した場合、それはポインタとして渡されるのです。
ポインタと配列は
ほとんど
は互換性があります。例えば
sizeof(pointer)
なぜなら、このポインターは実際のポインターのサイズを返すのであって、何を指しているのかを返すわけではないからです。また、例えば
&pointer
はポインタのアドレスを取得しますが
&array
は配列へのポインタを返します。注意すべきは
&array
は
非常に
とは異なります。
array
(またはそれに相当する
&array[0]
). 一方
&array
と
&array[0]
は同じ場所を指していますが、型は異なっています。上の配列を使って
&array
は、タイプ
char (*)[31]
一方
&array[0]
は
char *
.
もっと楽しむために 多くの人が知っているように、ポインタにアクセスするときに配列のインデックスを使用することが可能です。しかし、配列はポインタに分解されるので、配列でポインタの演算を使うことができます。
例えば
char array[] = "Foobar"; /* Declare an array of 7 characters */
上記で、4番目の要素(
'b
文字) を使用します。
array[3]
または
*(array + 3)
また、加算は 可換 となり、最後も次のように表現できます。
*(3 + array)
という楽しい構文が生まれます。
3[array]
関連
-
[解決済み】コンパイラの警告 - 真理値として使用される代入の周囲に括弧を付けることを推奨する
-
[解決済み】sizeof float (3.0) vs (3.0f)
-
[解決済み] 配列から特定の項目を削除するにはどうすればよいですか?
-
[解決済み] 配列からArrayListを作成する
-
[解決済み] なぜパスワードにはStringではなくchar[]が好まれるのですか?
-
[解決済み] SQLiteのINSERT/per-secondのパフォーマンスを向上させる
-
[解決済み] JavaScriptの配列で一意な値をすべて取得する(重複を排除する)。
-
[解決済み] C言語では「?」演算子は何をするのですか?
-
[解決済み] Java の配列を表示する最も簡単な方法は何ですか?
-
[解決済み] JavaScriptで配列の先頭に新しい配列要素を追加するにはどうすればよいですか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】C言語で「関数の型が競合しています」と表示される、なぜ?
-
[解決済み】変数の警告が設定されているが使用されていない
-
[解決済み】「無効なイニシャライザー」と表示されるのですが、何が間違っているのでしょうか?
-
[解決済み】警告。この関数ではXが初期化されていない状態で使用される可能性があります。
-
[解決済み】エラー:イニシャライザー要素がロード時に計算可能でない
-
[解決済み】式は変更可能なL値でなければならない
-
[解決済み】whileループの時間複雑性(Big O)はどうやったらわかるの?
-
[解決済み] 配列の場合、なぜ a[5] == 5[a] になるのでしょうか?
-
[解決済み] char s[]とchar *sの違いは何ですか?
-
[解決済み] C: char pointerとarrayの違い [重複].