c語言中指標指向的非指標變數不能使用 或 嗎

時間 2021-05-30 00:07:29

1樓:大灰灰老師

學術概念上不太正確(關於 unary 的定義)但實際上是對的解釋:C語言中,所有 unary operator 單目運算子,優先順序都是有著 left to right associativity 的比 right to left 的高,即放在被操作量右邊的先算。

例如:*p++ 先算右邊的 suffix increment,再做 dereference。要反過來的話應該用 (*p)++ 表示 p 指向的內容自加。

char *foo() 先看右邊的圓括號(這並不是 unary op 了),foo 是乙個函式,返回指向 char 的指標。如果要定義指向函式的指標,應該是 char (*foo)()。

2樓:lsl

一元運算子*和++是有相等的優先順序,但結合的時候是從右向左的。++是用在了p上,也就是指標+1,而不是用在了*p上(也就是通過說的指標所指向的資料自加1)。

3樓:Milo Yip

因為 postfix increment 的優先順序較 deference 高,所以 *p++ 等同於 *(p++)。運算子 = 和 += 的優先順序都較 deference 低。如果你是想把 deference 後的值加一,可用 (*p)++。

可以參考 C Operator Precedence。

C 語言中指標陣列和陣列指標 函式指標 指向函式的指標等等該怎麼理解?

ga6840 direct declarator IDENTIFIER declarator direct declarator direct declarator assignment expr direct declarator declarator direct declarator poin...

在 C 語言中指標的歷史是怎樣的?

Crazyjin 型別 變數和變數的值本來就是三個概念 一直都是三個概念。int是型別,int a 申明了乙個int型別的變數a。pointer是型別,pointer variable是pointer型別的變數。只不過這裡pointer和pointer variable沒有指明具體型別。這裡舉個具體...

在c語言中指標就是可以變化的位址嗎?

僅僅說對了一部分。1 的確,在絕大多數場合,指標是 變化的位址 我們開拓一下思路 變化的位址 的反義 是 不變化的位址 對嗎?沿這個思路,想一想,指標是否可能是 不變化的位址 int const p 指標p能變化嗎? 我認為,不一定 指標不僅負責儲存乙個位址,還負責儲存,它能管轄的記憶體範圍 例如 ...