23 Nisan 2015 Perşembe

Pointer and Swap

     Pointerlar verilerimizin bellekde hangi adreste tutulduklarını gösterir.    
     değişkenTipi* GöstergeAdi şeklinde tanımlanır.
     int türünde bir a pointeri
     int* a;  veya int *a; şeklinde tanımlanır.
     cout << a ; yazarsak a pointerının hangi adresi tuttuğunu görürüz. 
     cout << *a; yazarsak a pointerının tuttuğu adresdeki verinin değerini görürüz. 

    Soru:
    İnt türünde iki adet değişkenimiz olsun. Bu değişkenlerin değerlerini birbiriyle değiştiren bir fonksiyon yazalım.

Kodlar:
#include <iostream>
using namespace std;
void degistir(int *a, int *b);//fonksiyon prototipi
void main(){
    int a = 100;
    int b = 200;
    cout <<"-- degisimden once --"<< endl;
    cout << "a: " << a << " b: " << b << endl;
    degistir(&a, &b);//& adres operatörüdür. a ve b'nin adresini fonksiyona gönderdik.
    cout <<"-- degisimden sonra -- "<< endl;
    cout <<"a: "<< a << " b: " << b << endl;
    system("PAUSE");
}

void degistir(int *a, int *b){
    int x = *a;//a pointerındaki değeri x'a atadı.
    int y = *b;//b pointerındaki değeri y'ye atadı.
    *a = y;//a pointerının değerine y'yi atadı.
    *b = x;//b pointerının değerine x'i atadı.
}

Çıktı:

Hiç yorum yok:

Yorum Gönder