SORU
7 EKİM 2008, Salı


C işaretçileri NULL veya 0 (sıfır) kullanıyor musunuz ?

C üzerine sabitlenmiş iken C ilk günlerinde, (void*)0 olarak tanımlanan, NULL kullanılamadı. Herhangi bir işaretçi bir nevi işe yaramaz hale gelmiştir void*, dışında NULL atayabilirsiniz. O günlerde, null işaretçiler için 0 (sıfır) kabul edildi.

Bu gün için, bir null işaretçi sıfır olarak kullanmaya devam ettim ama etrafımdakiler NULL kullanmakta ısrar. Ben şahsen bir isim (NULL) mevcut bir değer vermek için faydası - ve ben de gerçek değerler olarak işaretçiler test etmek beri görmüyorum:

if (p && !q)
  do_something();

sonra kullanarak sıfır daha mantıklı (gibi kullanırsanız NULL olamaz mantıksal olarak kullanın p && !q - açıkça karşılaştırın karşı NULL, sürece size aittir NULL sıfır durumda, neden kullanmak NULL).

Herhangi bir objektif neden sıfır (veya tersi) BOŞ, ya da sadece kişisel bir tercih olduğunu tüm tercih var mı?

Edit: DEMİRYOLU ve istisnalar dışında, nadiren sıfır/NULL işaretçi kullanın, ama bazen onları hala. sizin (ve aslında demek) eklemek gerekir

CEVAP
7 EKİM 2008, Salı


İşte bu kabul Stroustrup burada: C Style and Technique FAQ

C NULL tanımı 0, yani sadece estetik bir fark yoktur. Makrolar önlemek için tercih ediyorum, 0 kullanıyorum. NULL ile bir başka sorun, insanların bazen ve/veya bir tamsayı 0 farklı olduğunu yanlışlıkla inanıyorum. Pre-standart NULL kod/bazen bir şey için uygun tanımlanmış ve bu nedenle vardı/Kaçınılması gereken vardır. Daha yaygın bu günlerde.

Null işaretçi adı varsa, nullptr; C 11'de deniyor arayın. Sonra da, nullptr bir anahtar kelime olur.

Dedi ki, küçük şeyleri dert etmeyin.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Numberphile

    Numberphile

    15 EYLÜL 2011
  • The White House

    The White Ho

    21 Ocak 2006
  • Within Temptation

    Within Tempt

    18 EYLÜL 2006