和指針相關的兩個特殊運算符:
一、"&" 取地址運算符,通過&運算符可以取出普通變量的地址;
二、"*" 有兩種意義:
1. 為指針標志: 是否為指針標志主要看前面是否有類型,此處有一個int
2. 為指針運算符:
在等號右面為取值。*可以取出指針變量所指向的普通變量的值。
在等號左面為賦值。*可以將指針變量所指向的普通變量的值,修改為其他。
3. 為乘法運算符。當且僅當左右的都為變量時。略。
如
int a, b =20, c=30, d=40, *p; (正確,此處的*為指針標志,只起到定義的左右,沒有取值和賦值的作用。是否為指針標志主要看前面是否有類型,此處最前面有一個int)
p=&d; (正確,p指向d的地址)
a=*p; (正確,此處的*為取值。最後結果a的值變為了d的值40)
*p =c; (正確,此處的*為賦值。最後結果d的值變為了C的值30)
*p =&b; (運行錯誤,左邊為內容值,右邊為地址,不等價)
----------------------------
等價表達式
若指針變量p指向變量a,即將變量a的地址賦給了指針變量p.
如:int a=20, *p=&a;
則有如下結果:
A、*p <=> a
B、 p <=> &a
C、 &*p <=> &a <=> p
D、*&a <=> *p <=> a
E、 (*p)++ a++
(*p)-- a--
++(*p) ++a ++*p
--(*p) --a --*p