Ana içeriğe geç
Modül 5 · Ders 2 ders 2Kurstaki 12/18~15 min
Modül dersleri (2/2)

İşaretçiler

İşaretçiler C++'ın en güçlü ve ayırt edici özelliklerinden biridir. Bilgisayarın fiziksel belleğine doğrudan erişmenizi sağlayarak verimli kaynak yönetimi ve yüksek performans sağlarlar.


1. Bellek ve Adres Nedir?

Programınızda bildirdiğiniz her değişken RAM belleğinin bir hücresinde saklanır. Her hücrenin benzersiz bir bellek adresi vardır (genellikle onaltılık biçimde ifade edilir, örneğin 0x7ffee3bf87ac).

C++, adres-of operatörünü & kullanarak herhangi bir değişkenin bellek adresini almamıza olanak tanır:

C++
int x = 42;
std::cout << &x; // Prints the memory address of x (e.g., 0x7ffee3bf87ac)

2. İşaretçinin Tanımı

İşaretçi başka bir değişkenin bellek adresini onun değeri olarak saklayan özel bir değişkendir.

Sözdizimi, veri türünden sonra * yıldız işaretinin kullanılmasını gerektirir:

C++
int x = 42;
int* ptr = &x; // ptr is a pointer to an integer that contains the address of x

3. Referans Kaldırma Operatörü (*)

Bir işaretçinin işaret ettiği adreste saklanan değere erişmek veya onu değiştirmek için, aynı zamanda * sembolüyle de temsil edilen referans operatörünü (veya dolaylı operatör) kullanırız:

C++
int x = 42;
int* ptr = &x;

std::cout << *ptr; // Prints 42 (the value ptr points to)

*ptr = 100; // Modifies the value of x through the pointer
std::cout << x;    // Now prints 100!

4. Boş İşaretçiler: nullptr

Geçerli bir adrese işaret etmeyen bir işaretçi, nullptr anahtar sözcüğüyle (C++11'de tanıtılan) başlatılmalıdır:

C++
int* ptr = nullptr; // Safe null pointer

Kendin dene

Egzersiz#cpp.m5.l2.e1
Denemeler: 0Yükleniyor…

Esas olarak, 42 ​​ile başlatılan bir tamsayı değişken değeri vardır. Değerin adresini işaret eden ptr tamsayısına yönelik bir işaretçi bildirin. Değerin değerini 100'e ayarlamak için ptr'nin referansını kaldırmayı kullanın ve son olarak std::cout'u kullanarak değeri yazdırın.

Düzenleyici yükleniyor…
İpucu göster

İşaretçiyi 'int* ptr = &value;' ile bildirin, '*ptr = 100;' referansını kaldırarak değeri değiştirin ve 'std::cout << value;' yazdırın.

3 denemeden sonra çözüm mevcut

Egzersiz#cpp.m5.l2.e2
Denemeler: 0Yükleniyor…

Bir tamsayıya (int* ptr) işaretçiyi kabul eden ve işaret ettiği değeri 2 ile çarpan (işaretçi boş değilse) doubleValue işlevini tanımlayın. Ana olarak, num değişkeninin adresini ileterek doubleValue'yu çağırın ve yazdırın.

Düzenleyici yükleniyor…
İpucu göster

İşlev 'int* ptr'yi kabul etmelidir. İçeride `*ptr = (_ptr) _ 2` kullanın. Ana olarak 'doubleValue(&num);' ile çağırın.

3 denemeden sonra çözüm mevcut

Quiz#cpp.m5.l2.q1
Hazır

Sağlanan kod göz önüne alındığında, hangi ifade a'nın değerini doğrudan 10'a ayarlayarak değiştirmenize izin verir?

C++
int a = 5;
int* p = &a;
// quale istruzione assegna 10 ad a?
Cevap seçenekleri