1.                        

C++ Dersleri - 21)POİNTERLAR - 4[ÇEVİRİ]

'C/C++' forumunda Hattab tarafından 10 Şubat 2016 tarihinde açılan konu

  1. Hattab

    Hattab New Member

    Katılım:
    22 Ekim 2015
    Mesaj:
    550
    Beğeniler:
    4
    Ödül Puanları:
    0
    POİNTERLAR VS. ARRAYLAR

    Pointerlar ve arraylar yakından ilişkilidir.Aslında pointerlar ve arraylar bir çok yerde birbirlerinin yerine kullanılabilir.Örnek olarak, bir arrayın başlangıcını gösteren bir pointer , tüm array üyelerine erişebilir.Aşağıda bir örnek verilmiştir:

    [HASHTAG]#include[/HASHTAG] <iostream>

    using namespace std;
    const int MAX = 3;

    int main ()
    {
    int var[MAX] = {10, 100, 200};
    int *ptr;

    // let us have array address in pointer.
    ptr = var;
    for (int i = 0; i < MAX; i++)
    {
    cout << "Address of var[" << i << "] = ";
    cout << ptr << endl;

    cout << "Value of var[" << i << "] = ";
    cout << *ptr << endl;

    // point to the next ********
    ptr++;
    }
    return 0;
    }

    Yukardaki kodun çıktısı şu şekilde olacaktır:
    Address of var[0] = 0xbfa088b0
    Value of var[0] = 10
    Address of var[1] = 0xbfa088b4
    Value of var[1] = 100
    Address of var[2] = 0xbfa088b8
    Value of var[2] = 200

    Ancak pointerlar ve arraylar tamamen aynı değildirler ve birbirlerinin yerine kullanılamayacakları yerler vardır.Örnek olarak:

    [HASHTAG]#include[/HASHTAG] <iostream>

    using namespace std;
    const int MAX = 3;

    int main ()
    {
    int var[MAX] = {10, 100, 200};

    for (int i = 0; i < MAX; i++)
    {
    *var = i; // This is a correct syntax
    var++; // This is incorrect.
    }
    return 0;
    }

    Pointer ile * sembolu kullanılarak var değişkenine mükemmel olarak erişilebilir fakat bu kullanım şekli illegaldir.Sebebi, arrayların l-value olarak kullanılamamasıdır.

    Çünkü bir array adı, bir pointer sabiti yaratır, ve o hala pointer stili ifadesinde kullanılmaktadır.Örnek olarak aşağıdaki kodda var[5] nin değeri olan 500'e erişilmeye çalışılmaktadır:
    *(var + 2) = 500;

    Yukardaki ifade geçerlidir ve başarılı olarak derlenir çünkü var değişkeni değişmemiştir.

    Alıntıdır.
     

Bu Sayfayı Paylaş

Share