2. İşaretçi İşlemleri ve Dinamik Bellek
İşaretçilere daha önce görmüş olduğumuz
artırma (++), azalatma (--), çıkarma (-), toplama (+) işlemlerini
uygulayabilirsiniz. Bunların yanında ilişkisel operatörleri de (
<=, =, !=, >= ) kullanmanız mümkündür. İlişkisel operatörlerin
sadece aynı tip işaretçiler üzerinde uygulanacağını unutmayınız.
Bir dizinin boyutu değişken olabilir, daha
dorusu bir program içinde değişkenler ve işaretçiler kullanılarak
diziler dinamik bellek yerleşimi ile yapılabilir. C++ da dinamik
belleş işlemleri new ve delete komutları ile gerçekleştirilir.
Genel tanımımız:
new <tür> [<[uzunluk]>]
new int
new char
new double [10]
new float[n]
new char[strlen(s) + 1]
new komutu ile yer tahsis etme işlemi
yapmaktayız. new int
->1 int'lik yer tahsis edilmiştir. Şimdide tahsis ettiğimiz yerin
serbest bırakılışını ele alalım. Bu sırada da delete komutu
devreye giriyor. Daha doğrusu delete operatöürü new operatörüyle
tahsis edilmiş olan blokları serbest bırakmak için kullanılır.
Genel tanımımız:
Delete[ ] <işaretçiadı>;
Eğer yer ayırma işlemi tek parça olarak
yapılmışsa (köşeli parantez kullanılmadan yapılmışsa) silme işlemi
de köşeli parantez kullanılmadan yapılmalıdır. Bir de şuna dikkat
edelim
Delete x+1; //hatalıdır
Delete (x+1); //doğrudur
kullanılacaktır. Şimdi bu söylediklerimizi
aşağıdaki örnek üstünde uygulayalım.
//dinamik.cpp
//dinamik bellek kavramı
#include <iostream.h>
struct tarih { //struck u daha görmedigimiz
int ay; //icin su an buraya egilmeyin.
int gun;
int yil;
};
void main()
{
int i, *is1, *is2; // i bir sabit ve *is1, *is2 isaretcilerimiz
is1 = &i;
|