2

私の CS コースは、Java から C に少し変わりつつあります。現在、ポインターを調べるのに忙しく、逆参照時にインクリメント用の ++ 演算子が機能しないことに気付きました。これは、何よりも単なる好奇心の問題です。まだポインターの概念に慣れていないだけです。私は何か間違ったことをしているだけですか、それともポインターと関係がありますか?

例えば:

*pointer++; Will not increment the value.
*pointer+=1; Will increment the value.

前もって感謝します!

4

5 に答える 5

5

値を増やしたい場合は、必ず括弧を使用する必要があります。

(*pointer)++;
于 2013-07-23T17:57:52.630 に答える
4

*pointer++pointer変数が指す値ではなく、変数をインクリメントします。

int array[4] = {3,5,7,9};

int *pointer = array;

// *pointer equals 3

*pointer++;

// *pointer now equals 5
于 2013-07-23T17:58:29.470 に答える
4
*pointer++;

と同等です

*(pointer++);  // pointer is incremented

そしてしない

 (*pointer)++;  // pointee is incremented
于 2013-07-23T17:58:39.460 に答える
2

*pointer++;以下とほぼ同等です。

*pointer;
pointer = pointer + 1;

なぜそうなのですか?

*pointer++;++は、 は後置演算子であるため、*実行される最初の参照演算は、++値をインクリメントします (値をpointerインクリメントしません)。

一方 *pointer += 1、次と同等です:

*pointer =  *pointer + 1;

が指す値をインクリメントしますpointer

于 2013-07-23T17:57:39.160 に答える