C++ Pointers and Arrays

by ck
0 yorum

Pointers and Arrays (İşaretçiler ve Diziler)

İşaretçi, C++’da değişkeninin başka bir değişkenin adresini depoladığını biliyoruz ve bu değişken verilerine erişmek için kullanılabilir. Benzer şekilde bir işaretçi de bir diziyi gösterebilir. Yani, bir dizinin tüm değerlerine erişmek için bir işaretçi de kullanılabilir.

Dizi, bitişik bir bellek konumunda (diğerinin yanı sıra) depolanan benzer tipte (aynı veri tipi) öğelerden oluşan bir koleksiyondur. Bu özellik, bu bitişik bellek konumlarında yineleme yapmak için kullanılabileceğinden, bir işaretçi için uygundur. Bir dizi oluşturduğumuzda, dizi adı temel olarak bu dizinin ilk adres bloğunu, yani temel adresi gösterir. Böylece dizi adının kendisi bir dizi olarak kabul edilebilir.

Syntax (Sözdizimi)

veri tipi (*var degiskenAdi)[dizi boyutu];

//Sekiz sayılık bir dizi işaretçisi şu şekilde tanımlanır
int (*ptrDegiskeni)[8] = NULL;

Örnek:

#include <iostream>
using namespace std;

int main() 
{ 
  
    int (*ptrDegiskeni)[8]; 
  
    int sayiDizisi[8] = { 1, 2, 3, 4, 5, 6, 7, 8 }; 
  
    ptrDegiskeni = &sayiDizisi; 
  
    cout << "İşaretçiyi kullanarak dizi değerleri:" << endl;
    for (int x = 0; x < 8; x++) 
    { 
       cout << "*(ptrDegiskeni + "  << x << ") : ";
       cout << *(*ptrDegiskeni + x) << endl; 
    }
    
    cout << endl << "sayiDizisi adresini adres olarak kullanarak dizi değerleri:" << endl;
    for (int x = 0; x < 8; x++) 
    { 
       cout << "*(sayiDizisi + "  << x << ") : ";
       cout << *(sayiDizisi + x) << endl; 
    }
    return 0; 
}

Çıktı:

İşaretçiyi kullanarak dizi değerleri:                                                                                                                                                
*(ptrDegiskeni + 0) : 1                                                                                                                                                              
*(ptrDegiskeni + 1) : 2                                                                                                                                                              
*(ptrDegiskeni + 2) : 3                                                                                                                                                              
*(ptrDegiskeni + 3) : 4                                                                                                                                                              
*(ptrDegiskeni + 4) : 5                                                                                                                                                              
*(ptrDegiskeni + 5) : 6                                                                                                                                                              
*(ptrDegiskeni + 6) : 7                                                                                                                                                              
*(ptrDegiskeni + 7) : 8                                                                                                                                                              
                                                                                                                                                                                     
sayiDizisi adresini adres olarak kullanarak dizi değerleri:                                                                                                                          
*(sayiDizisi + 0) : 1                                                                                                                                                                
*(sayiDizisi + 1) : 2                                                                                                                                                                
*(sayiDizisi + 2) : 3                                                                                                                                                                
*(sayiDizisi + 3) : 4                                                                                                                                                                
*(sayiDizisi + 4) : 5                                                                                                                                                                
*(sayiDizisi + 5) : 6                                                                                                                                                                
*(sayiDizisi + 6) : 7                                                                                                                                                                
*(sayiDizisi + 7) : 8

Örnek:

#include <iostream>
using namespace std;

int main() 
{ 
  
    int (*ptrDegiskeni)[8]; 
  
    int sayiDizisi[8] = { 1, 2, 3, 4, 5, 6, 7, 8 }; 
  
    ptrDegiskeni = &sayiDizisi; 
  
    cout << "İşaretçiyi adres görüntüleme:" << endl;
    for (int x = 0; x < 8; x++) 
    { 
       cout << "*(ptrDegiskeni + "  << x << ") : ";
       cout << *(ptrDegiskeni + x) << endl; 
    }
    
    cout << endl << "sayiDizisi dizisinin adres görüntüleme:" << endl;
    for (int x = 0; x < 8; x++) 
    { 
       cout << "*(&sayiDizisi + "  << x << ") : ";
       cout << *(&sayiDizisi + x) << endl; 
    }
    return 0; 
}

Çıktı:

İşaretçiyi adres görüntüleme:                                                                                                                                                        
*(ptrDegiskeni + 0) : 0x7ffc920f64d0                                                                                                                                                 
*(ptrDegiskeni + 1) : 0x7ffc920f64f0                                                                                                                                                 
*(ptrDegiskeni + 2) : 0x7ffc920f6510                                                                                                                                                 
*(ptrDegiskeni + 3) : 0x7ffc920f6530                                                                                                                                                 
*(ptrDegiskeni + 4) : 0x7ffc920f6550                                                                                                                                                 
*(ptrDegiskeni + 5) : 0x7ffc920f6570                                                                                                                                                 
*(ptrDegiskeni + 6) : 0x7ffc920f6590                                                                                                                                                 
*(ptrDegiskeni + 7) : 0x7ffc920f65b0                                                                                                                                                 
                                                                                                                                                                                     
sayiDizisi dizisinin adres görüntüleme:                                                                                                                                              
*(&sayiDizisi + 0) : 0x7ffc920f64d0                                                                                                                                                  
*(&sayiDizisi + 1) : 0x7ffc920f64f0                                                                                                                                                  
*(&sayiDizisi + 2) : 0x7ffc920f6510                                                                                                                                                  
*(&sayiDizisi + 3) : 0x7ffc920f6530                                                                                                                                                  
*(&sayiDizisi + 4) : 0x7ffc920f6550                                                                                                                                                  
*(&sayiDizisi + 5) : 0x7ffc920f6570                                                                                                                                                  
*(&sayiDizisi + 6) : 0x7ffc920f6590                                                                                                                                                  
*(&sayiDizisi + 7) : 0x7ffc920f65b0

Şunlar da hoşunuza gidebilir

Yorum Yap

Web sitemizde size en iyi deneyimi sunabilmemiz için çerezleri kullanıyoruz. Bu siteyi kullanmaya devam ederseniz, bunu kabul ettiğinizi varsayarız. Kabul Et Gizlilik Politikası