Pointer: Konsept

Pointer adres tutan bir veri tipidir. İnteger’ın sayı, char’ın karakter tutması gibi pointer da adres tutar. Pointer iki kısımdan oluşur; tuttuğu adres ve adresteki bilgiyi nasıl yorumlayacağı bilgisi.

Tuttuğu adres genelde 16lık sayı sistemiyle ifade edilir. 32 bitlik sistemlerde 32 bitdir. Pointerın kendisi yalnızca bu adresi tutar. Pointerın işaret ettiği bilgiye erişmek için, o hafızadaki yere gitmemiz gerekir. Gittiğimiz yerde sadece bitlerden oluşan sayılar olduğundan bu bitlerin anlamlı bir biçimde yorumlamlanması gerekir.

Pointerın tuttuğu bilginin nasıl yorumlanacağını tipi belirler. Eğer integer değere işeret ediyorsa, derleyici, pointerın tuttuğu hafıza değerini integer olarak yorumlar. Bir char veya bir float pointer aynı hafıza bölgesine işaret edebilir ama bunlardan yalnızca bir tanesi bilgiyi doğru biçimde yorumlayabilir.

Mesela hafızada ham olarak şöyle bir bilgi olsun.

    +----+----+----+----+----+----+----+----+----+----+----+
    | 0A | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 6A |
    +----+----+----+----+----+----+----+----+----+----+----+

 

Eğer bu bilgi string olarak yorumlanırsa

    +====+====+====+====+====+====+====+====+====+====+====+
    | 0A | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 6A |
    +====+====+====+====+====+====+====+====+====+====+====+

abcdefghij stringini üretir.

Eğer 2 byte’lık integer olarak yorumlanırsa

    +====+====+----+----+----+----+----+----+----+----+----+
    | 0A | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 6A |
    +====+====+----+----+----+----+----+----+----+----+----+

24842 sayısını üretir.

Eğer 4 byte’lık float olarak yorumlanırsa

    +====+====+====+====+----+----+----+----+----+----+----+
    | 0A | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 6A |
    +====+====+====+====+----+----+----+----+----+----+----+

4.17595656202980E+0011 sayısını üretir!!

Eğer 4 byte’lık integer olark yorumlanırsa

    +====+====+====+====+----+----+----+----+----+----+----+
    | 0A | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 6A |
    +====+====+====+====+----+----+----+----+----+----+----+

2667391754 çıksını üretir.

Son olarak eğer 1 byte’lık char olarak yorumlanırsa

    +====+----+----+----+----+----+----+----+----+----+----+
    | 0A | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 6A |
    +====+----+----+----+----+----+----+----+----+----+----+

\n yani linefeed karakterini üretir.

Veri, yorumlanmış hafızadır.

 

 


Pointer

322 Words

2017-04-18 03:00 +0300