C语言*运算符和运算符
取址運算符&用來取得其操作數的地址。如果操作數 x 的類型為 T,則表達式 &x 的類型是 T 類型指針(指向 T 的指針)。
取址運算符的操作數必須是在內存中可尋址到的地址。換句話說,該運算符只能用于函數或對象(例如左值),而不可以用于位字段,以及那些還未被存儲類修飾符 register 聲明的內容。
當需要初始化指針,以指向某些對象或函數時,需要獲得這些對象或函數的地址:
相反地,當已具有一個指針,并且希望獲取它所引用的對象時,使用間接運算符 *(indirection operator),有時候這會被稱為解引用運算符(dereferencing operator)。它的操作數必須是指針類型。如果 ptr 是指針,那么 *ptr 就是 ptr 所指向的對象或函數。如果 ptr 是一個對象指針,那么 *ptr 就是一個左值,可以把它(即 *ptr)當作賦值運算符左邊的操作數:
float?x,?*ptr?=?&x;*ptr?=?1.7;???????????????????//?將1.7賦值給變量x++(*ptr);??????????????????????????????????//?并將變量x的值加1在這個示例最后的語句中,ptr 的值保持不變,但 x 的值變成 2.7。
如果指針操作數的值不是某個對象或函數的地址,則間接運算符*的操作結果無法確定。
像其他一元操作數一樣,運算符 & 和 * 具有很高的優先級。操作數的組合方式是從右到左。因此,表達式 ++(*ptr)中的括號是沒有必要的。
運算符 & 和 * 是互補的:如果 x 是一個表達式,用于指定一個對象或一個函數,那么表達式 *&x 就等于 x。相反地,在形如 &*ptr 的表達式中,這些運算符會互相抵消,表達式的類型與值等效于 ptr。然而,不管 ptr 是不是左值,&*ptr 都一定不會是左值。
聲明:
本文于網絡整理,版權歸原作者所有,如來源信息有誤或侵犯權益,請聯系我們刪除或授權事宜。
總結
以上是生活随笔為你收集整理的C语言*运算符和运算符的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 河套平原在哪里
- 下一篇: 7个C语言小程序让你快速入门程序世界