Life Hunter
Lapis Toplayıcısı
- En iyi cevaplar
- 0
Herkese merhaba bu ders Değişken Ezme konusuna değineceğiz.
Farklı etki alanlarında aynı isimde değişkenler tanımlanabilir. Fakat bu değişkenlerden en son tanımlanan, diğerlerini bastırır.
Tanımlar örnek yapmadan pek bir şey ifade etmez. Bu yüzden hemen bir örnek yapalım.
Yukarıdaki kod hata verecektir. Çünkü main fonksiyonunda yani tek bir etki alanında aynı isimde 2 değişken tanımlamışız.
Bu kodda da aynı isme sahip 2 değişken tanımlamışız ama derleyici bu kodda hata vermez. Çünkü burada, aynı isme sahip 2 değişken var ama bu değişkenlerin etki alanları farklı. Değişkenlerden bir tanesi main fonksiyonun etki alanında tanımlanmış iken, Diğeri main fonksiyonun içine açtığımız başka bir etki alanında tanımlı. İkisinin etki alanı farklıdır.
Faka şöyle bir durum var. Bu iki değişkenin etki alanları farklı ama birinin etki alanı diğerinin etki alanını kapsıyor. Yani değişkenlerden biri main fonksiyonunda diğeri main fonksiyonun içindeki bir etki alanında tanımlanmış ama main fonksiyonunda tanımlanan değişkenin etki alanı main fonksiyonun içindeki diğer değişkenin etki alanınıda kapsıyor.
Yukarıdaki gibi bir kodda ekrana hangi değer çıkacak? 4 mü yoksa 2 mi? En son tanımlanan değişken öncekileri bastırır. Bu kodda 2 değerini taşıyan sayi1 isimli değişken 4 değerini taşıyan sayi1 değişkeninden sonra tanımlanmıştır. Yani en son 2 değerini taşıyan değişken tanımlanmıştır. Bu durumda ekrana 2 değeri çıkacaktır.
Çok fazla derine inmeye gerek yok en son tanımlanan diğerlerini bastırır.
Diyelimki daha da içeride bir etki alanı yaratıp o etki alanını içinde değişken tanımladık yukarıdaki gibi. Ekrana ne çıkacak? 3 tabii ki.
Peki burada ne çıktı alacağız? Dikkat edersiniz cout komutunu en son tanımlanan etki alanını dışında. main fonksiyonun içindeki ilk etki alanında tanımladık. Bu durumda ekrana 2 çıkar. Çünkü küme parantezi kapanınca 3 değerini taşıyan sayi1 etkisiz kaldı. Ne demiştik? Değişkenin tanımlandığı etki alanın kapama işareti yani ters küme parantezi } geldiği zaman değişkene veda ederiz. Bize cout komutunu 3 değerini taşıyan sayi1 değişkenin etki alanının dışında tanımladığımız için 3 değerini taşıyan sayi1 değişkeni etkisiz kaldı. Ama 4 değerini taşıyan değişkeninin etki alanı ve 3 değerini taşıyan değişkenin etki alanı sonlanmamış görüyorsunuz.(cout komutunu koyduğumuz yere kadar sonlanmamış yani) Bu durumda ekrana ne çıkacak? ikisinin arasında en son tanımlanan 2 değerini taşıyan olduğu için ekrana 2 çıkacak. Dikkat etmeniz gereken şey etki alanlarıdır değişken ezme konusunda.
Bu ders bu kadar.
Farklı etki alanlarında aynı isimde değişkenler tanımlanabilir. Fakat bu değişkenlerden en son tanımlanan, diğerlerini bastırır.
Tanımlar örnek yapmadan pek bir şey ifade etmez. Bu yüzden hemen bir örnek yapalım.
Kod:
int main()
{
int sayi1;
int sayi1;
}
Kod:
int main()
{
int sayi1 = 4;
if(1)
{
int sayi1 = 2;
}
}
Faka şöyle bir durum var. Bu iki değişkenin etki alanları farklı ama birinin etki alanı diğerinin etki alanını kapsıyor. Yani değişkenlerden biri main fonksiyonunda diğeri main fonksiyonun içindeki bir etki alanında tanımlanmış ama main fonksiyonunda tanımlanan değişkenin etki alanı main fonksiyonun içindeki diğer değişkenin etki alanınıda kapsıyor.
Kod:
int main()
{
int sayi1 = 4;
if(1)
{
int sayi1 = 2;
cout << sayi1;
}
}
Çok fazla derine inmeye gerek yok en son tanımlanan diğerlerini bastırır.
Kod:
int main()
{
int sayi1 = 4;
if (1)
{
int sayi1 = 2;
if (1)
{
int sayi1 = 3;
cout << sayi1;
}
}
}
Kod:
int main()
{
int sayi1 = 4;
if (1)
{
int sayi1 = 2;
if (1)
{
int sayi1 = 3;
}
cout << sayi1;
}
}
Bu ders bu kadar.