SORU
15 Aralık 2009, Salı


Neden varsayılan olarak't işaretçiler NULL ile başlatılmış değil mi?

Bunu daha önce cevaplanmış ama ben sadece cevap burada ya da Google'da bulamadım sanırım, ama şu soru türü yapamadım çünkü olduğunu düşünüyorum

Birisi işaretçiler NULL başlatılmış değil mi neden bana açıklayabilir mi lütfen?
Örnek:

  void test(){
     char *buf;
     if (!buf)
        // whatever
  }

Program buf boş olduğundan içine adım olmazdı.

Bilmek istiyorum neden, ne durumda çöp, özel işaretçiler bellek çöp hitap eden bir değişken ihtiyacımız var mı?

CEVAP
15 Aralık 2009, Salı


Biz işaretçi (ve diğer POD türleri) başlatılması gerektiğini fark ettim.
O zaman soru olur onları başlatmak gerekir".

Peki temelde iki yöntem vardır:

  • Derleyici onları başlatır.
  • Geliştirici onları başlatır.

Bize derleyici herhangi bir değişken açıkça geliştirici tarafından başlatılmış başlatılmış varsayalım. Sonra değişken başlatma olmayan önemsiz ve geliştirici beyan noktada, bunu yapma nedeni bazı işlemi gerçekleştirmek için ihtiyacı vardı/nerede olduğunu durumlarla karşılaştık ve o zaman atayın.

Şimdi derleyici bu değişken daha sonra BOŞ başlatan kodu için ekstra bir talimat ekledi durum var yani geliştirici kodu doğru başlatma yapmak için eklenir. Veya diğer koşullar altında değişken potansiyel olarak hiç kullanmadım. C geliştiricileri ki bir sürü ekstra talimat pahasına her iki koşul altında faul çığlık.

Sadece zaman değil. Aynı zamanda mekan. Her iki kaynak bir prim vardır ortamlar var ve geliştiriciler de vazgeçmek istemiyorum.

AMA: Başlatma zorlama etkisini taklit edebilirsiniz. Çoğu derleyici başlatılmamış değişkenler hakkında uyarır. Ben her zaman mümkün olan en yüksek seviyeye uyarı seviyem çevirin. Sonra tüm uyarıları hata olarak tedavi etmek için derleyici söyler. Bu koşullar altında çoğu derleyici sonra kullanılmayan ve kullanılan ve böylece oluşturulan kod önleyecek değişkenler için bir hata oluşturur.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Booredatwork.com

    Booredatwork

    5 Ocak 2009
  • DRDAnimation

    DRDAnimation

    28 EYLÜL 2012
  • UsherVEVO

    UsherVEVO

    15 EKİM 2009