Özet - İşaretçi temelleri
- C++ kursu
- Başlangıç
- Ders 82/116
- 5 dk
&, * ve nullptr'yi birleştirerek bir takas fonksiyonu yazarsın.
Özet - İşaretçi temelleri
Bu grupta işaretçilerin temel araçlarını öğrendin: tanımlama, & ile adres alma, * ile değere erişme, nullptr ile boş durum ve işaretçi aritmetiği. İşaretçiler, C++'ın düşük seviyeli gücünü açar.
İki ödev var. Birincisi, iki işaretçi parametreli bir swap fonksiyonu yazacaksın. İkincisinde, işaretçi aritmetiğiyle bir dizinin elemanlarını toplayacaksın. Her ikisi de öğrendiklerini birleştirir.
Uygulama swap(int*, int*) fonksiyonu
void swap(int* a, int* b) fonksiyonunu tanımla; gövdede bir int t geçici değişkeni ile *a ve *b'yi değiştir. main içinde int x = 5, y = 9; tanımla, swap(&x, &y) çağır, x ve y'yi aynı satırda boşlukla yazdır.
Başlangıç kodu
#include <iostream>
// swap fonksiyonunu tanımla
int main() {
// x ve y değişkenlerini tanımla
// swap çağrısı ekle
// x ve y'yi yazdır
return 0;
}Örnek çözüm
#include <iostream>
void swap(int* a, int* b) {
int t = *a;
*a = *b;
*b = t;
}
int main() {
int x = 5, y = 9;
swap(&x, &y);
std::cout << x << " " << y << "\n";
return 0;
}Beklenen çıktı
9 5
Uygulama İşaretçi ile dizi toplamı
int arr[] = {2, 4, 6}; tanımla. int* p = arr; ile başla. int sum = *p + *(p + 1) + *(p + 2); yazarak üç elemanı topla. sum'u std::cout ile yazdır.
Başlangıç kodu
#include <iostream>
int main() {
// Diziyi tanımla
// p'yi diziye bağla
// İşaretçi aritmetiğiyle topla
// Toplamı yazdır
return 0;
}Örnek çözüm
#include <iostream>
int main() {
int arr[] = {2, 4, 6};
int* p = arr;
int sum = *p + *(p + 1) + *(p + 2);
std::cout << sum << "\n";
return 0;
}Beklenen çıktı
12
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Bu kodun çıktısı nedir?
void swap(int* a, int* b) {
int t = *a;
*a = *b;
*b = t;
}
int main() {
int x = 5, y = 9;
swap(&x, &y);
std::cout << x << " " << y;
return 0;
}- 5 9
- 5 5
- 9 5 Doğru cevap
- Hata
Açıklama: swap(&x, &y) x ve y'nin değerlerini değiştirir.
2 swap çağrısı
swap(____, &y);
swap(&x, &y);
Açıklama: swap(&x, &y) x ve y'nin adreslerini geçirir.
3 İşaretçi araçlarını eşle
| Kavram | Anlamı |
|---|---|
int* p |
İşaretçi tanımı |
&x |
Adres al |
*p |
Değere eriş |
p + 1 |
Sonraki eleman |