私はこの疑いがあるときにポインタを再訪していました。ポインタを増やす(ptr ++)と(* ptr ++)
int *ptr;
int arr[5] = {10,20,30,40,50};
ptr = &arr[0];
今私がしなければprintf("Value: %d",*ptr);
は10
を印刷します:
ptr++;
printf("Value: %d",*ptr);
を結果は次のようになります。同様に20
私がしなければ:
*ptr++;
printf("Value: %d",*ptr);
結果は次のとおりです。30
しかし
printf("Value: %d",++*ptr);
は、私は私がそれをインクリメントするときptr
がタイプint
であるため、それは次のメモリ位置に4つのバイトをジャンプするだろうと思ってくれ31
を与えます。しかし、それは*ptr++
とptr++
について同じ動作を示し、++*ptr
では動作しないのはなぜですか?
[ptr ++は*(ptr ++)のように動作し、(* ptr)++では動作しないのはなぜですか?](http://stackoverflow.com/questions/6271028/why-does-ptr-act-like- ptr-and-not-ptr) –