Varsayılan (default) Argüman Flashcards

1
Q

Fonksiyonlarda default argümanlar

A

func(int a , int b , int c) diye tanımlıyoruz
ancak func(5,6) olarakta 3. parametreyi girmeden bu fonksiyonu çağırabiliyoruz.

func(int a , int b , int c = 50);
derleyici bu halde bunu 3 lü olarakta kullanabilir ancak 2 li olarak çağırıldığında varsayılan bir 50 değeri vardır.
ve bu deafult atama işlemi function declaration kısmında yapılır.

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

Fonksiyonu tanımlama

A

/////// declaration

void func(int =10 , int = 20 , int = 30 );

//////// definition
void func(int a , int b , int c ) {
cout &laquo_space;a &laquo_space;endl;
cout &laquo_space;b &laquo_space;endl;
cout &laquo_space;c &laquo_space;endl;
}

int main()
func( 3 , 4, 5 ) ; // bu çalıştığında ekranda 3 4 5 değerleri çıkar ANCAK;
func (5 , 4 ) ; // bu şekilde eksik parametreli çağrıldı ancak declaration kısmında default verdik. Oyüzden çıktı 5 4 30 olacak.

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

Örnek

A

/////////////////////////////////////////////////////////////////////
void f1 (int a = 10)
void f2( int x = f1() ) // öncelik kurallarına göre böyle yapılabilir

int x;
void f1(int &r = x) // aynı şekilde öncelik kurallarına göre bu da yapılabilir.
//////////////////////////////////////////////////////////////

int func() {
cout &laquo_space;” calling func” &laquo_space;endl;
return 1
}
int x = func()

int main()
cout&laquo_space;“selam” &laquo_space;endl;

// Bu kod örneğinde kod mainden başlar ancak önce calling func yazısı yazdırılır. Çünkü globalde x değişkenine func() atanırken aynı zamanda da yazı yazdırılıyor. O yüzden üstte olduğu için ilk bu ifade yazdırılıyor.
// O yüzden bunlara dikkat etmek gerek ki karışıklık olmasın.

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

Örnek 2

A

void processDate( int day, int month, int year = -1 )

int main(){
processDate ( 1 , 4 )
// dediğimzde year otomatik olarak -1 algılandı ve fonksiyonun içinde 2023 olarak atandı.

}

void processDate( int day, int month, int year ){
if ( year == -1 )
{
time_t timer = time(0);
tm *tptr = localtime(&timer);
year = tptr -> tm_year + 1900
}

NOT : varsayılan argüman illa inital değer atamak için kullanılmaz. if bloğun içinde kullanılmak için de kullanılabilir.

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