Konu Başlıkları: C Dökümanları
Tekil Mesaj gösterimi
Alt 20 January 2009, 14:50   Mesaj No:6

CoNQueRoR_61

Papatyam Usta Üyesi
Avatar Otomotik
Durumu:CoNQueRoR_61 isimli Üye şimdilik offline konumundadır
Papatyam No : 1397
Üyelik T.: 20 January 2009
Arkadaşları:0
Cinsiyet:
Memleket:istanbul
Yaş:33
Mesaj: 131
Konular:
Beğenildi:
Beğendi:
Takdirleri:10
Takdir Et:
Konu Bu  Üyemize Aittir!
Standart Ynt: C Dökümanları

Daha onceki fonksiyonlar dersimizde scope olayından bahsetmistik. Scopu main olan bir degiskeni bir fonksiyona vererek degerini degistiremiyorduk. Pointer kullanarak bunu becerebiliriz.

Simdi iki ornek yazacam. Biri main de kullanılan bir degiskenin degerini degistiremeyen bir fonksiyon

digeri ise pointer kullanarak degeri degistiren bir fonksiyon.

#include<stdio.h>



void degistir1(int a);



void degistir1(int a)

{

a=a+1;

}





void degistir2(int *a);



void degistir2(int *a)

{

*a=*a + 1;

}



main()

{

int x=5;

int *p;

p=&x;



degistir1(x);

printf("%d\",x);



degistir2(p);

printf("%d",x);



return 0;



}



bu programda mainde belirlenen x degiskeninin ilk degeri 5 e esitleniyor.

ardından p diye bir integer pointerı belirlenip p=&x; satırı ile x i işaret etmesi saglanıyor.

sonra degistir1 fonksiyonuna x veriiyor. printf komutu ile x in degerine bakılıyor. Program calıstırılırsa x in degerinin degistirilemedigi gorulecektir. Bunun sebebi fonksiyonlar dersinde anlatıldı.

Sonra degistir2 fonksiyonuna x in pointerı olan p veriliyor. Ardından printf ile tekrar x in degerine bakılıyor.

Program calısınca ekrana gelen ikinci degerin bu sefer degistirildigini ve x in yeni degerinin 6 oldugu

gorulecektir.



Bunun sebebi degistir2 fonksiyonuna scope olayının etki etmemesidir. Degistir2 nin kodlarına bakarsanız

aldıgı pointerın isaret ettigi degeri bir artırdıgını gorursunuz. Pointer direk olarak RAM deki “x” in adresine gidip

orda depolanan degeri degistiriyor. Bu yuzden x in yeni degeri sorgulandıgında RAM de ki x in adresine gidip degeri okuyan

bilgisayar degerin 6 oldugunu gorecek ve bize bu degeri verecektir.



Daha cok, bi suru anlatacagım şey var pointerlarla ilgili ama bir dokumanda bu kadar oluyor…

Bu temel pointer bilgisinden sonra siz program yaza yaza, C dokumanları okuya okuya pointerların marifetlerini kendiniz anlayacaksınız. Bu sefer odev yok, anca kafanızı toparlarsınız bu yazıdan sonra
__________________
Biz Bu Hallere Düşecek Adammıydık ???
Alıntı ile Cevapla