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

  • BASS212M

    BASS212M

    15 Temmuz 2009
  • Defence Videos

    Defence Vide

    13 Mayıs 2013
  • Film Riot

    Film Riot

    16 NİSAN 2006