0

これは私が持っている本からの質問で、私には理解できません

int ia[] = { 10, 12, 13 };
char ca[] = { ’a’, ’b’, ’c’ };
char st[] = "abc";

私が間違っていなければ、int と char の配列を宣言しました。しかし、質問はいくつかの式を評価するように求めました(回答が含まれています)。次の表現がわかりません。

(*ia)+1 => 11
*(ca+2) => c
*(st+3) => \0

これがどのように機能するかわかりません。アスタリスクはポインターを使用してそれらを参照していませんか? またはポインター変数を宣言しますか?ここで何をしているのですか?そして、それらの答えはどのようにして得られたのですか?

申し訳ありませんが、私はCに非常に慣れていません

4

2 に答える 2

4

配列は、ほとんどの式のコンテキストで最初の要素へのポインターに「減衰」します (sizeof の引数は主要な例外です)。これらの式は同等です。

 *(a+b) === a[b] === b[a]

そう

(*ia)+1 is ia[0]+1
*(ca+2) is ca[2]
*(st+3) is st[3]
于 2013-09-30T00:22:08.503 に答える