なぜaとbの値が変化するのでしょうか?P1とp2はaとbのアドレスを格納しています。なぜp1とp2を変更するとaとbが変わるのですか?ポインタの参照とアドレスを理解しようとする
#include <stdio.h>
int main(int argc, char** argv)
{
//&a stores address
//*p1 is a pointer
int a = 5, b = 10;
int *p1, *p2; //p1 and p2 are 2 pointers which can store int addressses
p1 = &a; //now p1 and p2 stores address of a and b
p2 = &b;
printf("p1 storing address of a = %d\n", *p1);
printf("p2 storing address of b = %d\n", *p2);
*p1=30;
*p2=40;
printf("p1 assigning values to p1 pointer = %d\n", *p1);
printf("p2 assigning values to p2 pointer= %d\n", *p2);
printf("a whose value is = %d\n", a);
printf("b = %d\n", b);
}
自分で理解できるスキーマを作成しようとします。ポインタに変数のアドレスが含まれている場合、* pointer = value;でポインターが指すスペースを変更できます。 –
'* p1 = 30'は、メモリアドレス' p1'を指すint30を格納します。 'a'がその値に使うメモリ。 – totoro