24 Temmuz 2018 Salı

Naked Pointer

Giriş
Açıklaması şöyle.
When an array decays, it converts into a pointer to the first element. In the case of int a[3][4], a is an array of int[4], so a pointer to an element of int [3][4] has type int (*)[4].
Tek Boyutlu Array
Şöyle yaparız.
void foo(int a[])
Eğer uzunluğu belirtmek istersek şöyle yaparız ancak uzunluk bilgisi kaybolur çünkü
void foo(int a[3]);
derleyici yarafından şu hale çevrilir.
void foo(int *a)
Dolayısıyla şöyle yaparız.
void foo(int* a, int size1);
İki Boyutlu Array
Eğer uzunluğu belirtmek istersek şöyle yaparız ancak uzunluk bilgisi kaybolur çünkü
void foo(int a[3][4])
Derleyici yarafından şu hale çevrilir.
void foo(int (*a)[4])
Uzunlukları belirtmek istersek şöyle yaparız.
void foo(int* a, int size1, int size2);
Decay Olmaması
Metodun imzasını şöyle yaparsak pointer decay olmaz.
void f (int (&a)[5]);

Hiç yorum yok:

Yorum Gönder