69401


ポインタが指すint型の値（aの中身：3）をpaを使って表示することができません。どうすればいいのでしょうか？実行結果の一番最後が3になるとおもっていたのですが。。

[code]

    int main(void)
    {
        int a;
    
        a = 3;
        printf("a %p %d\n", &a, a);
        
        int *pa = &a;
        printf("a %p %d : %p %d\n", &pa, &pa, pa, pa);  
    }
    
[/code]

実行結果

[code]

    a 0x7ffe4308e9ec 3
    a 0x7ffe4308e9f0 1124657648 : 0x7ffe4308e9ec **1124657644** //←ここがaの中身3になると思った。
    
[/code]


CC BY-SA 4.0
2020-08-09T23:34:37.910
69399
2020-08-09T23:59:14.763
2020-08-09T23:59:14.763
7500
36091
question
c
ポインタがさす先の中身を表示する方法


ポインタ変数`int
*pd`が指している中身のデータには、`*pd`としてアクセスできます。`printf`の`%p`と`%d`は単に表現の仕方（アドレスとしてか、整数としてか）を指定するだけなので、それによって数値が変化することはありません。

[code]

    int main(void)
    {
        int a; 
        a = 3;
    
        printf("a %p %d\n", &a, a);
        
        int *pa = &a;
        
        printf("%d\n",  pa); //=> 0x7ffe4308e9ec (ポインタ変数*paに格納されている、aが存在するアドレス)
        printf("%d\n", &pa); //=> 0x7ffe4308e9f0 (ポインタ変数*paが存在するアドレス)    
        printf("%d\n", *pa); //=> 3
        
        return 0;
    }
    
[/code]


CC BY-SA 4.0
2020-08-09T23:52:55.267
69401
2020-08-09T23:52:55.267
7500
69399
answer