#include<stdio.h>
int main(){
int a = 5;
int* ptr;
const int thisIsConstant = 10;
ptr = ( int* ) &thisIsConstant; //cast ediyoruz
*ptr = 9; //degistirdikkkk
printf("%d\n",thisIsConstant);
return 0;
}
ancak c++ ta aynı şey geçerli değil çünkü optimize edilme olayı farklı
kaynak: http://emreknlk.blogspot.com/2007/01/sabitler-de-artk-deimeye-balad_15.html
Const değişkenler ve pointerlar hakkında söylenecek bayağı bir şey var aslında,
mesala;
const int* ptr ile int* const ptr nin farklı şeyler olduğunu biliyor muydunuz?
const int* ptr ; ile işaretçinin içeriğini değiştirebilirsiniz ama işaret ettiği verinin içeriği değişemez.
int x, y;
const int* ptr = &x ; //işaretçi oluşturulurken değer atanıyor OK
*ptr = 111; //işaretçinin gösterdiği yerdeki veri değişemez, HATA
ptr = &y; //işaretçi farklı bir değişkene işaret ettirildi, OK
int* const ptr; de ise işaretçinin işaret ettiği adres değişemez, ama içerdiği veri değişebilir:
int x,y;
int* const ptr = &x ; //işaretçi oluşturulurken değeri atandı, OK
*ptr = 111; //işaretçinin verisi değiştirilebilir OK
ptr = &y; //işaretçi const tanımlanmıştı, başka bir yere işaret edemez, HATA
Son
olarakta const int* const ptr; ile tanımlanmış bir işaretçinin ne
içerdiği veri, ne de gösterdiği yer değişebilir. ( yukarıda ki iki
işaretçinin birleşimi gibi )
Hiç yorum yok:
Yorum Gönder