在此程式碼中,聲明了一個引用並將其初始化為透過取消引用空指標所獲得的值:
int &nullReference = *(int*)0;
雖然根據編譯器行為它可能看起來有效,但必須了解引用與指標。
根據C 標準(8.3.2/1):
「引用應初始化為引用有效的物件或函數...特別是空引用不能存在於定義明確的程式中。 ”
這強調了空引用,即不引用任何有效對象的引用,在 C語言中不是一個定義明確的概念.
此外,標準 (1.9/4) 指出「取消引用空指標的效果」未定義。在這種情況下,如果我們有一個使用空指標初始化的引用,則表示取消引用空指標本身,這是明確未定義的行為。
因此,雖然程式碼可以在沒有警告的情況下編譯,但它是無效的C 程式碼應該避免。空引用在語言中不是一個有效的概念,任何創建空引用的嘗試都會導致未定義的行為。
以上是C 引用可以為空嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!