Menu
Coddy logo textTech

İşaretçiler ve Diziler

Coddy'nin C++ Journey'sinin Mantık & Akış bölümünün bir parçası. Ders 5 / 56.

Diziler ve işaretçiler (pointers), C++'da özel bir ilişkiye sahiptir. Bir dizi tanımladığınızda, dizinin adı aslında o dizinin ilk elemanına yönelik bir işaretçi gibi davranır. Bu bağlantı, dizilerle güçlü şekillerde çalışmak için işaretçileri kullanmanıza olanak tanır.

Şu dizi tanımlamasını dikkate alın:

int numbers[5] = {10, 20, 30, 40, 50};
int* ptr = numbers;  // ptr artık numbers[0] elemanını işaret ediyor

Burada, numbers, &numbers[0] ile eşdeğerdir - her ikisi de size ilk elemanın adresini verir. ptr işaretçisi artık aynı konumu gösteriyor.

Bir diziye işaretçiniz olduğunda, öğeler arasında gezinmek için işaretçi aritmetiğini kullanabilirsiniz. Bir işaretçiye 1 eklemek, onu aynı türdeki bir sonraki öğeye taşır:

ptr++;        // Artık numbers[1] öğesini işaret ediyor
ptr = ptr + 2; // Artık numbers[3] öğesini işaret ediyor

Değere erişmek için işaretçiyi herhangi bir konumda dereference edebilirsiniz: *ptr size mevcut konumdaki değeri verir ve *(ptr + 1) size bir sonraki öğenin değerini verir.

Bu işaretçi-dizi ilişkisi, geleneksel dizin tabanlı döngüler yerine işaretçileri kullanarak diziler üzerinde yineleme yapmanızı ve dizi geçişine alternatif bir yaklaşım sunmanızı sağlar.

challenge icon

Görev

Kolay

Bir işaretçi kullanarak bir dizi üzerinde yineleme yapan ve her öğeyi yazdıran, işaretçiler ile diziler arasındaki ilişkiyi gösteren bir program oluşturun.

Aşağıdaki dizi size verilmiştir:

int values[6] = {15, 23, 8, 42, 17, 31};

Programınız şunları yapmalıdır:

  1. values dizisinin ilk öğesini gösteren, ptr adında bir işaretçi oluşturun
  2. Dizinin 6 öğesinin tamamı üzerinde yineleme yapmak için işaretçi aritmetiğini kullanın
  3. Her konumda işaretçinin gösterdiği değere erişerek her öğeyi yazdırın
  4. İşaretçi aritmetiğini kullanarak işaretçiyi bir sonraki öğeye taşıyın (işaretçiyi artırın)

Her öğeyi ayrı bir satıra, aşağıdaki biçimde yazdırın:

Element: [value]

Çıktı, dizide göründükleri sırayla 6 öğenin tamamını göstermeli ve dizi indekslemesi yerine işaretçinin gösterdiği değere erişme yoluyla elde edilmelidir.

Kendin dene

#include <iostream>
using namespace std;

int main() {
    // Verilen dizi
    int values[6] = {15, 23, 8, 42, 17, 31};
    
    // TODO: Dizinin ilk elemanını işaret eden 'ptr' adında bir pointer oluşturun
    
    // TODO: Pointer aritmetiği kullanarak 6 elemanın tamamını dolaşmak için bir döngü kullanın
    // TODO: Pointer'ın referansını çözerek (dereferencing) her bir elemanı yazdırın
    // TODO: Pointer aritmetiği kullanarak pointer'ı bir sonraki elemana taşıyın
    
    return 0;
}
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Mantık & Akış bölümündeki tüm dersler

Kendi başına pratik yap: Online C++ derleyicisi