|
圖1. 給指針變量賦值 以后我們便可以通過指針變量ip間接訪問變量i, 例如: x=*ip; 運算符*訪問以ip為地址的存貯區(qū)域, 而ip中存放的是變量i的地址, 因此, *ip訪問的是地址為1800的存貯區(qū)域(因為是整數(shù), 實 際上是從1800開始的兩個字節(jié)), 它就是i所占用的存貯區(qū)域, 所以上面的賦值表達式等價于 x=i; 另外, 指針變量和一般變量一樣, 存放在它們之中的值是可以改變的, 也就是說可以改變它們的指向, 假設 int i, j, *p1, *p2; i='a'; j='b'; p1=&i; p2=&j; 則建立如下圖所示的聯(lián)系: p1 i ┏━━━┓ ┏━━━┓ ┃ ╂──→ ┃ 'a' ┃ ┗━━━┛ ┗━━━┛ p2 i ┏━━━┓ ┏━━━┓ ┃ ╂──→ ┃ 'b' ┃ ┗━━━┛ ┗━━━┛ 圖2. 賦值運算結果 這時賦值表達式: p2=p1 就使p2與p1指向同一對象i, 此時*p2就等價于i, 而不是j, 圖2.就變成圖3.所示: p1 i ┏━━━┓ ┏━━━┓ ┃ ╂──→ ┃ 'a' ┃ ┗━━━┛ ┌→ ┗━━━┛ p2 │ j ┏━━━┓ │ ┏━━━┓ ┃ ╂─┘ ┃ 'b' ┃ ┗━━━┛ ┗━━━┛ 圖3. p2=p1時的情形 如果執(zhí)行如下表達式: *p2=*p1; 則表示把p1指向的內(nèi)容賦給p2所指的區(qū)域, 此時圖2.就變成圖4.所示 p1 i ┏━━━┓ ┏━━━┓
|