SORU
17 Aralık 2009, PERŞEMBE


C dizisi başlatma

intializing bu formu tüm 0s bir dizi

5* *tüm Derleyiciler tarafından desteklenen? ,

eğer öyleyse, sözdizimi diğer türleri benzer var mı? örneğin

bool myBoolArray[ARRAY_SIZE] = {false}

CEVAP
17 Aralık 2009, PERŞEMBE


Evet, başlatma bu formu tüm C derleyicileri tarafından desteklenir. C dilinin bir parçasıdır. Aslında C dili C den gelen bir deyim. C dili = { 0 } bir deyimevrensel-başlatıcı sıfır. Bu daneredeyseC durumda .

Bu initalizer evrensel olduğu için, bool dizi için gerçekten farklı bir ihtiyacın yok "". sözdizimi 0 bool türü için bir başlatıcı olarak çalışıyor

bool myBoolArray[ARRAY_SIZE] = { 0 };

garantili tüm diziyi başlatmak için false ile. Sıra

char* myPtrArray[ARRAY_SIZE] = { 0 };

14 ** tip boş-işaretçiler ile bütün diziyi başlatmak için garantili.

Eğer okunabilirliği arttırır düşünüyorsanız, kesinlikle kullanabilirsiniz

bool myBoolArray[ARRAY_SIZE] = { false };
char* myPtrArray[ARRAY_SIZE] = { NULL };

ama konu = { 0 } değişken verirtam olarakaynı sonuç.

Ancak, C = { 0 } integral 0 ile başlatılamıyor olan numaralama türleri, örneğin, gibi tüm türleri için işe yaramayabilir. Bu nedenle özellikle C kısa form destekler

T myArray[ARRAY_SIZE] = {};

yani {} sadece boş bir çift. Bu varsayılan başlatma (skaler) temel tip için tüm diziyi düzgün sıfır başlatılması anlamına gelir herhangi bir türü (öğeleri varsayılan başlatma izin varsayarsak), bir dizi.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • FF Radio

    FF Radio

    16 Mayıs 2008
  • LimeFire

    LimeFire

    2 ŞUBAT 2012
  • Sam Kear

    Sam Kear

    14 Temmuz 2007