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
İş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-standartNULL
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.
Null türleri: en iyi boş bir çek veya ...
Nasıl Ruby global değişken veya sabit ...
Eğer bir dize null olup olmadığını kon...
Neden adresi null işaretçi için kullan...
Dizin (sıfır tabanlı) sıfırdan büyük v...