SORU
6 Aralık 2010, PAZARTESİ


C : null başvuru

Bu kod geçerli (ve tanımlanan davranış) parça mı?

int &nullReference = *(int*)0;

Her iki g ve çınlama kullanarak*, -Wextra, , *, *7-std=c 98*6 3*... *hatta herhangi bir uyarı olmadan derlemek,

Kurs başvuru erişilemiyor beri aslında boş değil, (boş bir işaretçi kaldırma anlamına gelir), ama boş olsun ya da olmasın adresini kontrol ederek kontrol edebiliriz:

if( & nullReference == 0 ) // null reference

CEVAP
6 Aralık 2010, PAZARTESİ


Başvurular işaret değil.

8.3.2/1:

Başvuru için başlatılmış olacaktır geçerli nesne veya işlev bakın. [Not: özellikle, bir null başvuru olamaz iyi tanımlanmış var program, tek yolu çünkü böyle bir referans olacaktır oluşturun bağlama “ile elde edilen nesne kaldırma boş gösterici, hangi tanımsız davranışlara neden olur. Olarak 9.6, bir referans olamaz açıklanan doğrudan bir bit alanlara bağlı. ]

1.9/4:

Diğer bazı işlemler açıklanmıştır bu Uluslararası Standart olarak tanımsız (örneğin, etkisi kaldırma null işaretçi)

Johannes "kaldırma boş gösterici" kategorik olarak tanımsız davranış belirtilmelidir. olup olmadığını bazı şüphe yok silinmiş bir yanıt, söylediği gibi Ama bu değil bir dava yükseltmek şüpheler, beri bir null işaretçi değil kesinlikle noktası için bir "geçerli nesne veya işlevi", hiçbir arzusu içinde standartları Komitesine takdim boş başvuruyor.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ChannelRichard

    ChannelRicha

    7 Kasım 2008
  • Karan Thakur

    Karan Thakur

    23 HAZİRAN 2010
  • MVLV28

    MVLV28

    17 Mart 2008