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.
- Dinamik bellek ayırma
C dilinde, işaretçiyi kullanılan malloc() ve calloc() fonksiyonları kullanarak belleği dinamik olarak ayırabiliriz.
- 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.
Ad | Açıklama | Sembol |
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