大頭 發問時間: 電腦與網際網路程式設計 · 1 0 年前

請問有關C++程式語言的問題,不懂為何他的輸出是這樣

請問大大以下兩個程式

int x;

int y;

int *p=&x;

int *q=&y;

*p=35;

*q=98;

*p=*q;

cout<<x<<" "<<y<<endl;

cout<<*p<<" "<<*q<<endl;

輸出是 98 98 98 98 為何呢?

int x;

int y;

int *p=&x;

int *q=&y;

x=35;

y=46;

p=q;

*p=78;

cout<<x<<" "<<y<<endl;

cout<<*p<<" "<<*q<<endl;

請問以上的輸出又是為何呢?

1 個解答

評分
  • 永康
    Lv 5
    1 0 年前
    最佳解答

    int x;

    // 給 x 一個 int 大小的空間,但是空間沒有 "值"

    int y;

    // 給 y 一個 int 大小的空間,但是空間沒有 "值"

    int *p=&x;

    // 給 p 指標一個空間,並且指定(就是 = ) p 指向 "x空間的地址"

    int *q=&y;

    // 給 q 指標一個空間,並且指定(就是 = ) q 指向 "y空間的地址"

    *p=35;

    // 把 p 指到的地址,用 35 當空間內容 (*是強調空間內容)

    // 結果是,x 被指定成 35

    *q=98;

    // 把 q 指到的地址,用 98 當空間內容 (*是強調空間內容)

    // 結果是,y 被指定成 98

    *p=*q;

    // 用 "q指到的空間內容" 來填滿 "p指到的空間內容" (*是強調空間內容)

    // 結果是,(*q) 就是 y 就是 98;(*p) 就是x,強迫變成 (*q),98。

    ●宣告時,用"*符號"表示指標。

    ●非宣告,用 *p 是 "p指到的空間內容"。

    ======================================================

    int x;

    // 給 x 一個 int 大小的空間,但是空間沒有 "值"

    int y;

    // 給 y 一個 int 大小的空間,但是空間沒有 "值"

    int *p=&x;

    // 給 p 指標一個空間,並且指定(就是 =) p 指向 "x空間的地址"

    int *q=&y;

    // 給 q 指標一個空間,並且指定(就是 =) q 指向 "y空間的地址"

    x=35;

    // 用 35 當 x 空間內容

    // 於是 *p ( p 指到的空間內容)當然是 x,35

    y=46;

    // 用 46 當 y 空間內容

    // 於是 *q ( q 指到的空間內容)當然是 y,46

    p=q;

    // p 指標被強迫跟著 q指標一起指,已知 q指標指向 y,所以 p指標也開始指向 y

    // p指標不再指向 x

    *p=78;

    // 因為 p指標, q指標都指向 y,所以 78 會改變 y 的空間內容 (*p 和 *q 也都是抓 y 空間的內容值 78 )。

    // p指標不再指向 x,所以 x空間內容不變。

    x y

    *p *q

    35 78

    78 78

還有問題?馬上發問,尋求解答。