C++ Pointer

by ck
0 yorum

Pointer (İşaretçi)

İşaretçi, C++ ‘da başka bir değişkenin adresini tutan bir değişkendir. Değişkenler gibi veri türlerine sahiptirler, örneğin bir tamsayı tipi işaretçi bir tamsayı değişkeninin adresini tutabilir ve bir karakter tipi işaretçi char değişkeninin adresini tutabilir.

İşaretçinin avantajı

  • İşaretçi kodu azaltır ve performansı artırır, dizeleri, ağaçları vb. almak için kullanılır ve diziler, yapılar ve işlevlerle kullanılır.
  • İşaretçiyi kullanarak fonksiyondan birden fazla değer döndürebiliriz.
  • Bilgisayarın belleğindeki herhangi bir bellek konumuna erişmenizi sağlar.

İşaretçinin kullanımı

      C++ dilinde birçok işaretçi kullanımı vardır.

  1. Dinamik bellek ayırma

      C dilinde, işaretçiyi kullanılan malloc() ve calloc() fonksiyonları kullanarak belleği dinamik olarak ayırabiliriz.

  1. Diziler, Fonksiyonlar ve Yapılar

      C dilinde işaretçiler dizilerde, fonksiyonlarda ve yapılarda yaygın olarak kullanılmaktadır. Kodu azaltır ve performansı artırır.

AdAçıklamaSembol
Adres operatörüBir değişkenin adresini belirleyin.& (ve işareti)
Dolaylı işleçBir adresin değerine erişin.∗ (yıldız işareti)

Syntax (Sözdizimi)

veri_tipi *degisken_adi;
int *ptr, var;

Not: Yukarıda bahsettiğim gibi, bir tamsayı tipi işaretçi başka bir int değişkeninin adresini tutabilir. Burada bir tamsayı değişkeni var ve ‘ptr işaretçisi vardır. Değişkenin adresini işaretçiye atamak için “ve” (&)  işaretini kullanırız.

ptr = &var;

Örnek:

#include <iostream> 
using namespace std; 

int main() 
{ 
    int *ptr, var = 16;  

    ptr = &var;     
  
    cout << "*ptr değişkenin değeri: " << *ptr << endl;     
    cout << "ptr  değişkenin değeri: " << ptr << endl; 
    cout << "var  değişkenin değeri: " << var << endl; 
 
    return 0;
}

Çıktı:

*ptr değişkenin değeri: 16                                                                                                                 
ptr  değişkenin değeri: 0x7ffd483d2494                                                                                                     
var  değişkenin değeri: 16

Örnek:

#include <iostream> 
using namespace std;

int main () 
{
   int  tamSayi;
   char karakter[10];
   double ondalikliSayi[5] = { 15.3,357.7421,41.54,543.1 };

   cout << "tamSayi değişkenin değeri      : " << &tamSayi << endl;
   cout << "karakter değişkenin değeri     : " << &karakter << endl;
   cout << "ondalikliSayi değişkenin değeri: " << &ondalikliSayi << endl;
 
   return 0;
}

Çıktı:

tamSayi değişkenin değeri       : 0x7fffc4929e5c                                                                                            
karakter değişkenin değeri       : 0x7fffc4929e8e                                                                                            
ondalikliSayi değişkenin değeri: 0x7fffc4929e60

Örnek:

#include <iostream>
using namespace std;

int main() 
{

    int *ptr, tamSayiDizisi[]={1, 2, 3, 4, 5, 6, 7, 8, 9};

    ptr = tamSayiDizisi;
    for(int x=0; x<9;x++)
    {
        cout << *ptr << " - " << ptr << "\n";
        ptr++;
    }
    return 0;
}

Çıktı:

1 - 0x7fffbfe80e40                                                                                                                         
2 - 0x7fffbfe80e44                                                                                                                         
3 - 0x7fffbfe80e48                                                                                                                         
4 - 0x7fffbfe80e4c                                                                                                                         
5 - 0x7fffbfe80e50                                                                                                                         
6 - 0x7fffbfe80e54                                                                                                                         
7 - 0x7fffbfe80e58                                                                                                                         
8 - 0x7fffbfe80e5c                                                                                                                         
9 - 0x7fffbfe80e60

Ş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ı