24

定義を仮定すると:

int i  = 10;
int *p = &i;

*pa がここで有効な左辺値である理由:

*p+=10; 

*p が &i に格納されている int の値に評価されるべきではありません。10、したがって「左辺値ではない」エラーを生成しますか?

4

5 に答える 5

14

左辺値は、操作可能なストレージの領域を参照する式です。

*pは、ストレージの領域を指す表現です。これは、変数のようにストレージの領域を参照しないため、言う10+=10;こととは異なります。10

于 2011-01-24T19:58:38.580 に答える
2

非常に簡単に言えば、ポインターはオブジェクトの内容ではなく、オブジェクトを指します (一般的に、非 OOP の意味で)。そうです、逆参照されたポインターは有効な左辺値です。

非常に低レベルの言葉で。ポインターはメモリアドレスに他なりません。参照解除されたポインターは、そのアドレスのメモリです。

于 2011-01-25T10:42:43.143 に答える
2

の定義と混同していると思いますp実際、 はint へのポインタp型の変数であり、その値は のアドレスに初期化されます。i

それにもかかわらず、*p有効な左辺値でもあります - ストレージの場所への有効な式です。

于 2011-01-24T20:19:52.633 に答える