說起C語言的這個指標的星號,我覺得有時候真的很容易引起人的誤會啊。當初老外在發明設計C語言的時候,怎麼沒有想到這個星號會與乘法符號相互混淆呢?不過既然C語言已經發明瞭這麼多年了,全世界使用C語言也很嗨嘛,再去修改這個規定也不現實,那麼我們就從自身出發,看看這個星號怎麼去區別指標和乘法吧。
其實星號什麼時候是用在指標上,什麼時候用到乘法上,還是比較容易區分的。
對於指標而言,星號一般出現在兩個場合,一個是指標定義的場合,一個是指標使用的場合。在定義指標的場合,就是在定義指標時前面加個星號而已,比如:
int *p;
這個就死記硬背吧,指標定義時前面的星號就是告訴編譯器變數p就是個指標,除此之外沒有別的意思了。
在指標使用的場合前面會加個星號。注意不是定義指標哦,是使用指標,比如:
*p + 1;
上述這個語句的意思就是使用指標,怎麼使用?就是把指標指向的值加上1.這個也死記硬背吧,使用指標時前面的星號就是告訴編譯器我要用指標了,除此之外也沒有別的意思了。
那麼在做乘法的時候,星號就是一個運演算法則。如果在乘法中藥用到指標的話,可能會出現如下寫法:
1 * *p;
意思就是1與指標指向的值相乘。此時怎麼區分?就是最貼近指標變數p的那個星號是用於指標的,也就是指標定義時使用。
如果C語言能重新發明一次,也許發明者會用個#、$或者其他的什麼字元來代替*吧,因為表示指標的*和乘法的*確實容易混淆。
說起C語言的這個指標的星號,我覺得有時候真的很容易引起人的誤會啊。當初老外在發明設計C語言的時候,怎麼沒有想到這個星號會與乘法符號相互混淆呢?不過既然C語言已經發明瞭這麼多年了,全世界使用C語言也很嗨嘛,再去修改這個規定也不現實,那麼我們就從自身出發,看看這個星號怎麼去區別指標和乘法吧。
其實星號什麼時候是用在指標上,什麼時候用到乘法上,還是比較容易區分的。
對於指標而言,星號一般出現在兩個場合,一個是指標定義的場合,一個是指標使用的場合。在定義指標的場合,就是在定義指標時前面加個星號而已,比如:
int *p;
這個就死記硬背吧,指標定義時前面的星號就是告訴編譯器變數p就是個指標,除此之外沒有別的意思了。
在指標使用的場合前面會加個星號。注意不是定義指標哦,是使用指標,比如:
*p + 1;
上述這個語句的意思就是使用指標,怎麼使用?就是把指標指向的值加上1.這個也死記硬背吧,使用指標時前面的星號就是告訴編譯器我要用指標了,除此之外也沒有別的意思了。
那麼在做乘法的時候,星號就是一個運演算法則。如果在乘法中藥用到指標的話,可能會出現如下寫法:
1 * *p;
意思就是1與指標指向的值相乘。此時怎麼區分?就是最貼近指標變數p的那個星號是用於指標的,也就是指標定義時使用。
如果C語言能重新發明一次,也許發明者會用個#、$或者其他的什麼字元來代替*吧,因為表示指標的*和乘法的*確實容易混淆。