SORU
11 Kasım 2011, Cuma


inş char* char sabit* - hepsi aynı mı?

Benim anlayış, const değiştiricileri soldan sağa okunmalıdır. Ben de oradan aldım:

const char*

değiştirilemez olan bir işaretçi, ancak işaretçi kendisi

char const*

mutable karakter sabit işaretçi.

Ama aşağıdaki kodu için aşağıdaki hataları alıyorum:

const char* x = new char[20];
x = new char[30];   //this works, as expected
x[0] = 'a';         //gives an error as expected

char const* y = new char[20];
y = new char[20];   //this works, although the pointer should be const (right?)
y[0] = 'a';         //this doesn't although I expect it to work

Yani... hangisi? Benim anladığım ya benim derleyici(VS 2005) yanlış mı?

CEVAP
11 Kasım 2011, Cuma


Aslında standardına göre const doğrudan öğesine değiştirironun sol. Bir bildiri başında const kullanımı sadece uygun zihinsel bir kısayoldur. Aşağıdaki iki ifade eşdeğerdir:

char const * pointerToConstantContent1;
const char * pointerToConstantContent2;

Modifiye kendisi olmayan işaretçi sağlamak için, const yıldız sonra yer almalıdır:

char * const constantPointerToMutableContent;

İşaretçi ve işaret içeriği korumak için, iki consts kullanın.

char const * const constantPointerToConstantContent;

Şahsen kabul ettimher zamaniddia ediyorum böyle değiştirmek değil niyetim bölümünü sonra inş koyarak işaretçiyi sabit kalmasını istediğim bölüm olduğu hakkında en ufak bir tutarlılık.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Damian Winter

    Damian Winte

    27 ŞUBAT 2007
  • Justin Schenck

    Justin Schen

    24 Kasım 2006
  • kamaniusilelis

    kamaniusilel

    10 HAZİRAN 2011