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

  • FPSRussia

    FPSRussia

    19 NİSAN 2010
  • NightShader1

    NightShader1

    25 Temmuz 2006
  • PaulGBelliveau

    PaulGBellive

    5 Mart 2009