#include <iostream>
#include <string>
using namespace std;
/*
int main()
{
int x = 7;
cout << "x 'in degeri : " << x << endl;
cout << "x 'in RAM deki adresi : " << &x << endl;
// & ile ramdeki ilk adres değeri 000000D3ED4FFCF4 ni bulduk
// int 4 byte oldugundan bu adresde dahil 4 byte 'lik yerin tamamını hesaplar
// ama bize 4 byte lik adresin ilk değerini verir.
return 0;
}
*/
/*
int main()
{
// Pointer ve & (ampersant) Konusunu Kavrayalım
int x = 7;
int *p = &x; // pointer ile x 'in adres değerini bulma
cout << "x 'in degeri : " << x << endl;
cout << "x 'in & ile RAM deki adresi : " << &x << endl;
//pointer ile gösterimi
cout <<"pointer p ile adres degeri : "<< p << endl;
cout << "*p ile ( *p = &x) x in pointer degeri : " << *p <<" bulduk "<< endl;
// RAM 'deki adresi bulma
// &x in RAM deki değerini & (ampersant ) ile bulduk 000000E4126FF564
// p pointer bize int *p = &x x'in RAM 'in adres değerini verir 000000E4126FF564
// Değişkenin değerlerini bulma
// normalde x in değerini cout<<x<<endl; buluruz x 'in degeri : 7
// pointer *p ile de x in değerini : *p=&x; ile buluruz x in pointer degeri : 7 bulduk
return 0;
}
*/
/*
int main()
{
//String'ler ile Pointer
string food = "pizza";
string *ptr = &food;
//Değişken Değerlerini (pizza) yazdıralım
cout << food << endl; // pizza
cout << *ptr << endl; // pizza
//Değişken RAM adreslerini Bulma
cout << &food << endl; // 0000001DBA6FF718
cout << ptr << endl; // 0000001DBA6FF718
//Kodumuzun Çıktısı
// pizza
// pizza
// 0000001DBA6FF718
// 0000001DBA6FF718
cout << endl;
// Pointer ile değişkenin içeriğini değiştirme
cout << "Pointer ile icerik degistirme " << endl;
*ptr = "Hamburger";
cout << food << endl;
cout << *ptr << endl;
// Kodun Çıktısı :
// Hamburger
// Hamburger
//**** Pointerlar RAM 'deki adresin içeriğini değiştirir güncelle sil işlemleri yapar
//**** Çıktıya baktığımızda bir önceki RAM adres değerinin aynı ama içeriğinin (Hamburger) değiştini görürüz
// Pointer ile adres sabit kalır içerik değişir.
cout << endl;
cout << "Pointer ile RAM Adresi sabit ve icerik degisti " << endl;
cout << &food << endl;
cout << ptr << endl;
//// Kodun Çıktısı
//// Pointer ile RAM Adresi sabit ve icerik degisti
// 00000021466FF5A8
// 00000021466FF5A8
//Tüm Kodumuzun Çıktısı
//Değişkenimizin içeriği
/* pizza
pizza
// Değişkenimizin RAM adresi
000000AEFA54FBE8
000000AEFA54FBE8
Pointer ile icerik degistirme
Hamburger
Hamburger
Pointer ile RAM Adresi sabit ve icerik degisti
000000AEFA54FBE8
000000AEFA54FBE8
*\
return 0;
}
*/
int main()
{
// iki adet pointer oluşturup ikisine x 'in adresini atayabiliriz
// double 8 byte 'dir.
double x = 3.14;
double *y = &x;
double *z = &x;
cout << "Adress of x is " << &x << endl;
cout << "Adress of y is " << &y << endl;
cout << "Adress of z is " << &z << endl;
cout << endl;
cout << "Value of x is " << x << endl;
cout << "Value of y is " << y << endl;
cout << "Value of z is " << z << endl;
cout << endl;
// y 'nin içeriğini değiştirme *y x'in adresini tuttuğu yerde ki değer 3.14 değiştir. yani x 'in yeni değeri 70.19 ile
// Neden *y=70.19 dediğimizde x 'in içeriği değişti?
//Pointerlar kendi içlerinde adress tutar ve adres deki değerin içeriğini değiştirir.
// pointer adres değişkenimizin içeriği *y = &x; x 'in değeri 3.14 tür.
// değiştir *y = 70.19; x 'in artık yeni değeri 70.19 dur.
*y = 70.19;
cout << x << endl;
cout << endl;
cout << "Value of x is " << x << endl;
cout << "Value of y is " << y << endl;
cout << "Value of z is " << z << endl;
// Kodlarımızın Çıktısı
// Adress of x is 000000971F0FF508
// Adress of y is 000000971F0FF528
// Adress of z is 000000971F0FF548
// Value of x is 3.14
// Value of y is 000000971F0FF508
// Value of z is 000000971F0FF508
// 70.19
// Value of x is 70.19
// Value of y is 000000971F0FF508
// Value of z is 000000971F0FF508
return 0;
}
Sonraki Ders :
Pointerlar ile Fonksiyonların Kullanımı