SORU
23 HAZİRAN 2010, ÇARŞAMBA


Neden atanmamış işaretçiler öngörülemeyen bellek gelin ve BOŞ bir işaret DEĞİL mi?C:

Uzun zaman önce programa okul için C kullandım. Gerçekten C hakkında nefret bir şey hatırlıyorum: atanmamış işaretçiler NULL gelin.

Dünya onlar olurdu neden öğretmenler de dahil olmak üzere pek çok kişi sorduatanmamış bir işaretçi varsayılan davranış, BOŞ işaret değilöngörülemeyen olmak için çok daha tehlikeli gibi görünüyor.

Cevap sözde performanstı ama ben hiç satın aldı. Programlama tarihindeki birçok hata önlenebilir birçok C NULL varsayılan olduğunu düşünüyorum.

Burada bazı C bahsediyorum (cinas tasarlamak) işaret kod:

#include <stdio.h>

void main() {

  int * randomA;
  int * randomB;
  int * nullA = NULL;
  int * nullB = NULL;


  printf("randomA: %p, randomB: %p, nullA: %p, nullB: %p\n\n", 
     randomA, randomB, nullA, nullB);
}

Uyarılar (C derleyicileri görmek güzel ben okurken çok daha güzel ve çıkışları ile derler ki:

randomA: 0xb779eff4, randomB: 0x804844b, nullA: (sıfır), nullB: (sıfır)

CEVAP
23 HAZİRAN 2010, ÇARŞAMBA


Aslında, işaretçi depolama bağlıdır. Statik depolama ile işaretçileri null işaretçiler ile initizalized. Otomatik depolama süresi ile göstericiler başlatılmadı. ISO C 99 6.7.8.10 bakın:

Eğer otomatik depolama süresi olan bir nesne açıkça başlatıldı değilse, değeri. belirsiz. Eğer statik depolama süresi olan bir nesne açıkça başlatıldı,değilse sonra:

  • eğer işaretçi türü varsa, bir null işaretçi için başlatıldı
  • eğer aritmetik türü varsa, olumlu ya da imzasız başlatılır sıfır;
  • eğer toplama ise, her üye (özyinelemeli olarak)başlatıldı bu kurallar; . göre
  • eğer bir birlik halinde, birinci adlı üye (özyinelemeli olarak)başlatıldı bu kurallara göre.

Ve evet, otomatik depolama süresi ile nesneleri performansı artırmak için başlatıldı. Sadece 4K başlatılıyor hayal günlüğü işlevi için her çağrıda dizi (üzerinde çalıştığım bir projede, neyse ki C beni başlatma önlemek için, iyi bir performans artışı elde edelim bir şey gördüm).

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • After Effects Tutorials w/ Mikey

    After Effect

    24 HAZİRAN 2009
  • Autodesk 3ds Max Learning Channel

    Autodesk 3ds

    23 HAZİRAN 2010
  • BgirlNilaya

    BgirlNilaya

    29 EKİM 2008