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
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.
* Sabit ve sabit char *char arasındaki...
Dönüştürmek için nasıl bir std::string...
char * karşı sabit karakter *sabit sab...
C tipi işaretsiz char * karakter *sabi...
Neden't İ 'char**' ...