簡體   English   中英

(char *)0是什么意思?

[英]What does (char*) 0 mean?

這是一個關於這個問題的問題: (char *)0在c中是什么意思?

答案稍微偏離了解釋究竟是什么答案,但最后的答案提到它是一個指向地址0處的字符的指針,它是空的。 這給我帶來了兩個疑問。

  1. 在c中,我們可以給char * 9並說它是指向地址9的指針嗎? 我們不會收到任何錯誤或警告嗎?

  2. 好吧,假設(char *)0確實是指向地址0處字符的指針,但這個地址0是什么意思? 我的意思是我們怎么能說它是空的呢? 在那種情況下,(char *)1或(char *)2等的值是多少?

編輯:只是把它放在這里是否有幫助。 當我發現execl linux系統調用中的最后一個參數為null並且我看到了一個相當奇怪的語法時,我最初搜索這個問題:(char *)0。

謝謝。

(char *) 0不是“指向地址0處字符的指針”。 在C (char *) 0以特殊方式處理 - 保證生成類型為char *空指針值 形式上它不指向任何char對象。 它的實際數值(“地址”)是實現定義的,可以對應任何地址,不一定是0 例如,如果給定平台為char * type的空指針值保留該地址,則數字(char *) 0可以產生指向地址0xFFFFFFFF的指針。 但同樣,從語言的角度來看,空指針值並不能真正指向任何地方。

(char *) 9沒有這種特殊含義。 (char *) 9產生的指針也與實現有關。 在大多數實現中,它確實會產生一個指向地址9char *指針。

為了解決(char *) 0特殊處理,你可以嘗試類似的東西

int i = 0;
(char *) i;

上面的(char *) i (雖然也依賴於實現)通常會產生一個指向地址0char *指針。 這里禁用特殊處理的關鍵時刻是表達式中的0不再是常數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM