const int * i;
i
tamsayı sabit bir işaretçidir. i
farklı bir değere işaret etmek için değiştirilebilir, ancak i
ile işaret edilen değer değiştirilemez.
int * const i;
i
sabit olmayan bir tamsayıya sabit bir işaretçidir. i
ile işaret edilen değer değiştirilebilir, ancak i
farklı bir değere işaret edecek şekilde değiştirilemez.
const volatile int ip;
Bu seferki biraz zordur. ip
'un const
olduğu gerçeği, derleyicinin ip
değerini değiştirmenize izin vermeyeceği anlamına gelir. Bununla birlikte, teoride, örn. adresini alarak ve const_cast
operatörünü kullanarak. Bu çok tehlikeli ve iyi bir fikir değil, ama izin verilir. volatile
niteleyici, her zaman ip
'a erişildiğini, her zaman belleğinden yeniden yüklenmesi gerektiğini, yani bir kayıtta saklanmaması gerektiğini belirtir. Bu, derleyicinin belirli optimizasyonları yapmasını engeller. volatile
niteleyicisini, başka bir iş parçacığı tarafından değiştirilmiş olabilecek bir değişkeniniz olduğunda veya bellek eşlemeli G/Ç kullanıyorsanız veya derleyicinin beklemeyeceği davranışa neden olabilecek diğer benzer durumlarla kullanmak istediğinizde. Aynı değişkeni const
ve volatile
kullanarak oldukça sıra dışı (ancak yasal) - genellikle birini görürsünüz ama diğerini değil.
const int *i;
Bu ilk bildiriminde aynıdır.
Dilbilgisi ve yazım için düzenleyecekseniz, neden bir "ben" yazarak "If" yazıp "!" Yazmıyorsunuz? – Eclipse