Referanslar Flashcards

1
Q

Referans nedir

A

c++ ta pointerların bir üst seviyesidir. Referans herhangi bir değişkenin diğer bir ismini söyler.
int x = 34;
int &ref = x; // bu referans x i gösterir. x i kullandığımız her yerde ref i de kullanabiliriz.

ref de yapılan değişiklikler ( aritmetic) x te de değişir.
ref kullanarak pointer yerine geçebilir. ÇÜNKÜ REFERANSLAR ADRES VE İÇİNDEKİ DEĞİŞKENİ TUTAR.

NEDEN KULLANILIR?
çünkü daha yüksek seviyeli dillerde pointer kavramı kaldırıldı. Mesela c#. referanslar pointerların maskelenmesidir.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Örnek

A

int main()

int x = 5;
int&r = x;

r++; // x = 6 olur.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

ÖNEMLİ AÇIKLAMA

A

void func(int a){ a = 999;}

int x = 234;
cout&laquo_space;x &laquo_space;endl;
func(a);
cout&laquo_space;x &laquo_space;endl;

burda x değeri aynı kalır. ÇÜNKÜ x i 234 olarak atadığımız için fonksiyon içine xin gösterdiği değeri değil tam olara x in kendisini yani 234 değerini atarız. o yüzden fonksiyon içinde 234 = 9999 gibi bir durum oluşur. Bu yüzden değişmez.

ONUN YERİNE REFERANS KULLANILIR KOLAYLIK OLSUN DİYE.

void func(int &a){ a = 999;}

int x = 234;
cout&laquo_space;x &laquo_space;endl;
func(a);
cout&laquo_space;x &laquo_space;endl;

BURDA x değeri değişir çükü referansta yapılan değişiklik x i de değiştirir.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Farklı referanslar aynı değer

A

int x = 6;
int &r1 = x;
int &r2 = x;
int &r3 = x;

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Structlar da referanslanabilir

A

struct Data{
int a,b,c;
};

Data mydata;
Data &r = mydata;
r.b = 4;

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Fonksiyonda referans

A

int g = 90;

int &func(){
return g;
}

int main()

func() = -1 // normalde fonksiyona değer ataması yapamayız. Ancak refeans değeri geri döndüğü için burda func() , g yerine geçer ve onun referansıdır.
O ZAMAN ;;;
referans fonksiyonlar aynı zamanda bir değişken ve çıktısını refere eder.

int *func(){
return &g;
}

int main()

*func() = -1

burda da aynı şekilde bir atama yapılabilir.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

REFERANS VS POİNTER FARKI

A

pointer array :
int**a ={&a,&B,&c} yapabiliriz ancak;

int&a ={r1,r2,r3} yapamayız
referance array yoktur.

NOT: int a[10]={0};
int (&r)[10] = a; yapabiliriz. Yani referanslarla dizi tutamayız ama dizinin ismini referanslayabiliriz.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly