C語言中指標的 號和乘法的 號,怎麼更好的區分?

時間 2021-06-19 12:58:26

1樓:C語言答疑課堂

說起C語言的這個指標的星號,我覺得有時候真的很容易引起人的誤會啊。當初老外在發明設計C語言的時候,怎麼沒有想到這個星號會與乘法符號相互混淆呢?不過既然C語言已經發明了這麼多年了,全世界使用C語言也很嗨嘛,再去修改這個規定也不現實,那麼我們就從自身出發,看看這個星號怎麼去區別指標和乘法吧。

其實星號什麼時候是用在指標上,什麼時候用到乘法上,還是比較容易區分的。

對於指標而言,星號一般出現在兩個場合,乙個是指標定義的場合,乙個是指標使用的場合。在定義指標的場合,就是在定義指標時前面加個星號而已,比如:

int *p;

這個就死記硬背吧,指標定義時前面的星號就是告訴編譯器變數p就是個指標,除此之外沒有別的意思了。

在指標使用的場合前面會加個星號。注意不是定義指標哦,是使用指標,比如:

*p + 1;

上述這個語句的意思就是使用指標,怎麼使用?就是把指標指向的值加上1.這個也死記硬背吧,使用指標時前面的星號就是告訴編譯器我要用指標了,除此之外也沒有別的意思了。

那麼在做乘法的時候,星號就是乙個運算法則。如果在乘法中藥用到指標的話,可能會出現如下寫法:

1 * *p;

意思就是1與指標指向的值相乘。此時怎麼區分?就是最貼近指標變數p的那個星號是用於指標的,也就是指標定義時使用。

如果C語言能重新發明一次,也許發明者會用個#、$或者其他的什麼字元來代替*吧,因為表示指標的*和乘法的*確實容易混淆。

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

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

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

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

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

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