İş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 ediyorBurada, 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 ediyorDeğ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.
Görev
KolayBir 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:
valuesdizisinin ilk öğesini gösteren,ptradında bir işaretçi oluşturun- Dizinin 6 öğesinin tamamı üzerinde yineleme yapmak için işaretçi aritmetiğini kullanın
- Her konumda işaretçinin gösterdiği değere erişerek her öğeyi yazdırın
- İş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;
}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
1İşaretçiler ve Bellek
İşaretçi Nedir?Adres OperatörüDereference OperatörüNull İşaretçilerİşaretçiler ve Diziler'new' ile Dinamik Bellek'delete' ile Belleği Serbest BırakmaÖzet - İşaretçi Pratiği2Vektörler (Dinamik Diziler)
std::vector'a GirişBir Vektör OluşturmaEleman EklemeElemanlara ErişmeVektör BoyutuFor Döngüsü ile YinelemeAralık Tabanlı For DöngüsüEleman SilmeÖzet - Vektör İşlemleri3Proje: Görev Listesi Aracı
Projeye Genel BakışGörev EklemeKendi başına pratik yap: Online C++ derleyicisi