0

ポインターの基本原則を理解しようとしています。ポインター変数に値を割り当てると、実際の変数の値が変わると誰かが私に言いました。本当?私はコードを書き、これを得ました:

#include <stdio.h>
#include <stdlib.h>
int main()
{
    int x=5;
    int *address_of_x = &x;
    int y = *address_of_x;
    *address_of_x = 9;
    printf("The value of x is: %d\n", x);
    printf("The X is at: %p\n", &address_of_x);
    printf("value of y = %d\n", y);
    return 0;
}

次のような出力が得られました。

The value of x is: 9
The X is at: 0028FF04
value of y = 5

「y」の値が5のままなのはなぜですか? それはコマンドの順序のためですか?

4

6 に答える 6

3

はい、そうです。 address_of_xへのポインターが割り当てられますxy、完全に独立したint変数です。x(ポインターを介して)と同じ値を割り当てますが、xyは異なる変数です。

この時点で、 に代入する*address_of_xと の値は変更されますがx、 は変更されませんy

于 2013-08-22T17:59:11.030 に答える
1
 +--------------+      
 |   5          |
 |*address_of_x |
 +--------------+
        ^
        |         y=*address_of_x =5
        |
 +--------------+
 | address_of_x |
 | 0028FF04     |
 +--------------+

次の時間

 *address_of_x = 9

 +--------------+      
 |   9          |
 |*address_of_x |
 +--------------+
        ^
        |         but y still 5
        |
 +--------------+
 | address_of_x |
 | 0028FF04     |
 +--------------+
于 2013-08-22T18:06:16.250 に答える