İşaretçi aritmetiği
- C++ kursu
- Başlangıç
- Ders 81/116
- 5 dk
İşaretçi üzerinde + ve - ile aritmetik yapmayı öğrenirsin.
İşaretçi aritmetiği
İşaretçiler üzerinde + ve - ile aritmetik yapılabilir. Bir işaretçiye +1 eklemek, bir sonraki elemana ilerler; türün boyutu kadar adım atar. Örneğin int* p üzerinde p + 1 yazarsan, p bir int boyutu kadar ilerler.
Bu özellik, dizileri gezmek için kullanışlıdır. Bir dizinin adı, ilk elemanın adresidir; int* p = arr; ile başlayıp *(p + 1), *(p + 2) ile elemanlara erişebilirsin. Bu, arr[1] yazmakla aynı anlama gelir.
Dizi ve işaretçi bağlantısı
Bir dizinin adı, ilk elemanın adresi olarak yorumlanır. arr ile &arr[0] aynı anlama gelir. Bu yüzden int* p = arr; yazabilirsin; p artık dizinin başını gösterir.
arr[i] aslında *(arr + i)'nin kısayoludur. Yani indeksleme, işaretçi aritmetiği ve dereference işleminin birleşimidir. Bu bağlantı, C++'ın düşük seviyeli doğasını yansıtır; ama günlük kodda arr[i] yazmak daha okunaklıdır.
Uygulama İşaretçi ile dizi gez
int arr[] = {10, 20, 30}; tanımla. int* p = arr; ile p'yi dizinin başına bağla. *(p + 1) ile ikinci elemanı std::cout ile yazdır.
Başlangıç kodu
#include <iostream>
int main() {
// Diziyi tanımla
// p'yi diziye bağla
// İkinci elemanı yazdır
return 0;
}Örnek çözüm
#include <iostream>
int main() {
int arr[] = {10, 20, 30};
int* p = arr;
std::cout << *(p + 1) << "\n";
return 0;
}Beklenen çıktı
20
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Bu kodun çıktısı nedir?
int arr[] = {10, 20, 30};
int* p = arr;
std::cout << *(p + 1);- 10
- 20 Doğru cevap
- 0
- 30
Açıklama: *(p + 1) dizinin ikinci elemanını verir; o da 20'dir.
2 İfadeyi anlamına eşle
| Kavram | Anlamı |
|---|---|
p + 1 |
Sonraki eleman |
*(p + 1) |
İkinci değer |
arr |
Dizi adı |
int* p = arr |
Bağlama |
3 İşaretçi aritmetiği
std::cout << *(p ____ 1);
std::cout << *(p + 1);
Açıklama: *(p + 1) p'den bir sonraki elemana erişir.