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

  • FrankJavCee

    FrankJavCee

    29 Kasım 2008
  • paikimchung

    paikimchung

    12 Mayıs 2006
  • Shylo Sharity

    Shylo Sharit

    27 EKİM 2011