Temel taşlardan referans, pointer ile ilgili bir örnek üzerinden çözelim;
Biraz bunlar hakkında temel bilgileriniz olmalı
------------------------------------------------------------
int* x = 10; gibi ise pointer diyoruz,
int x = 10; ise normal integer değeri,
&x ise x'in adresi demek değişik bir sayı yazar,
*x ise dereferans demek, &'ın tersi gibi,
Soru, Eğer biraz bilginiz varsa önce çözmeye çalışın, output nedir?
cevap ve çözüm;
Biraz bunlar hakkında temel bilgileriniz olmalı
------------------------------------------------------------
int* x = 10; gibi ise pointer diyoruz,
int x = 10; ise normal integer değeri,
&x ise x'in adresi demek değişik bir sayı yazar,
*x ise dereferans demek, &'ın tersi gibi,
Soru, Eğer biraz bilginiz varsa önce çözmeye çalışın, output nedir?
Kod:
#include <iostream>
using namespace std;
int main()
{
int x = 10;
int y = 20;
int *a = &y;
int *b = a;
*b = 30;
b = &x;
cout << "x= " << x <<endl;
*b = 50;
cout << "x= " << x <<endl;
cout << "y= " << y <<endl;
cout << "a= " << a <<endl;
cout << "*a= " << *a <<endl;
cout << "b = " << b << endl;
cout << "*b= " << *b <<endl;
cout << "&*a= " << &*a <<endl;
cout << "**&b= " << **&b <<endl;
return 0;
}
cevap ve çözüm;
Kod:
#include <iostream>
using namespace std;
int main()
{
int x = 10;
int y = 20; //x ve y'nin ilk değerleri
int *a = &y;
int *b = a;
//pointer a y nin adresini gösteriyor yani a değiştiğinde
//y adresindeki değer değişecek
//b pointer'ı a yı gösteriyor, yani a'nın gösterdiği y'i
*b = 30; //b pointer 30 demek, a'yı gösterecek
// oda y'yi değiştiricek (y=30)
b = &x; //b artık x'in adresini gösterdiği için x'i değiştircek
cout << "x= " << x <<endl; //x = 10
*b = 50; //b, x i 50 yapacak
cout << "x= " << x <<endl; //x = 50
cout << "y= " << y <<endl; //y = 30
//a ve b pointerları normal yazılırsa gösterdikleri x ve y'nin
//adreslerini, * ile gösterilirse değerlerini gösterecek
cout << "a= " << a <<endl; //y nin adresini gösterecek(değişik bir sayı)
cout << "*a= " << *a <<endl; //y nin değeri 30
cout << "b = " << b; //x nin adresini gösterecek(değişik bir sayı)
cout << "*b= " << *b <<endl; //x in değeri 50
cout << "&*a= " << &*a <<endl; //&(referans) ve *(dereferans)
//birbirini eleyecek ve direk a demek yani y in adresi
cout << "**&b= " << **&b <<endl; //*b ye eşit, oda x in değeri 50
return 0;
}
Son düzenleme: