Pointer: Sözdizimi

Herhangi bir T tipi için pointer

T  *degişken_adi

şeklinde tanımlanır.

Örnek olarak;

    struct complex { int re, im; };

    char ch, *pch;
    int i, *pi;
    struct complex c, *pSc;

Tanımlamalarını yapalım. Adresleri onluk tabanda, byte düzeyinde ve ardışık olarak gösterirsek,

    | label | address | value |
    |-------|---------|-------|
    | ch    | 400     |       |
    | pch   | 401-403 |       |
    | i     | 404-407 |       |
    | ip    | 408-411 |       |
    | c.re  | 412-415 |       |
    | c.im  | 416-419 |       |
    | pSc   | 420-423 |       |

şeklinde hafızaya dizilir

Eğer,

    pch = &ch;
    pi = &i;
    pSc = &c;

atamalarını yaparsak,

    | label |   adress   | value |
    |-------|------------|-------|
    |  ch   | 400        |       |
    |  pch  | 401-403    |   400 |
    |  i    | 404-407    |       |
    |  ip   | 408-411    |   404 |
    |  c.re | 412-415    |       |
    |  c.im | 416-419    |       |
    |  pSc  | 420-423    |   412 |

şekline dönüşür.

& (address of operator, ‘adresi’ operatorü) önüne geldiği değişkenin adresini alır.

Dereferans İşlemi

Dereferans, pointerın gösterdiği yerdeki adres değerine, pointer üzerinden erişmektir. pi pointerının işaret ettiği (adresini tuttuğu) i değişkenine, erişmek için pointerın başına * konulur.

    *pi = 20;

atamasından sonra hafıza haritası;

    | label  |  adress   | value |
    |--------|-----------|-------|
    |   ch   | 400       |       |
    |   pch  | 401-403   |   400 |
    |   i    | 404-407   |    20 |
    |   ip   | 408-411   |   408 |
    |   c.re | 412-415   |       |
    |   c.im | 416-419   |       |
    |   pSc  | 420-423   |   412 |

şeklinde olur.


pointer

259 Words

2017-04-19 03:00 +0300