2012-04-29 17 views
-1

回答が投稿されていない練習テストでこれを尋ねられました。コードをテストする方法はありませんが、混乱しています。あなたは答えを理解するだけでなく、なぜ私を助けてくれますか?Cプラクティステスト用文字と文字列

int foo() { 
    int a = 1; 
    char b[] = "zapples"; 
    a = *(b + 1); 
    if (a == 'a') return 1; 
    else return 0; 
} 
What does foo return? ____ 
+0

あなたは何を理解していませんか? – ouah

+0

返品内容具体的に 'a = *(b + 1);' – Reid

答えて

1

Cのポインタの仕組みを教えてもらえましたか?

私はあなたにまっすぐに答えを与えるつもりが、これについて考えていないよ:

bは、文字列「zapples」の開始アドレスを持っています。これは、b[0]が "z"を指していることを意味します。このため、別の表記は*(b + 0)あり、それは)「、0のオフセットで、アドレスbに含まれる値である。この情報により、*(b + 1)の値は何ですか?

これは演習を解決するために十分でなければなりません。

0

これは1

ラインa = *(b + 1)が返される重要なものである。それは、それが2番目のポイントの配列の最初の要素へのポインタとしてBを取り、1を加算する。そのように、それは次に間接参照されそのアドレス「a」の値が変数aに割り当てられます。

+1

これは宿題です。答えをあげないようにしてください:) –

+0

申し訳ありませんが、私は、 – DrYap

+0

練習テストはタグではないので、実際にはむしろ宿題ではないので、タグを使用しました。私は最後のために勉強しています、そしてただの説明がほしいと思っていました。あなたの答えをありがとう。 – Reid