#include<stdio.h>
#include<conio.h>
int main()
{
int x=500,*y;
y=&x;
printf("%d\n",x);
printf("%d\n",&x);
printf("%d\n",y);
printf("%d\n",&y);
printf("%d\n",*y);
getch();
}
Yukarıdaki örneği resimle birlikte açıklayalım...
Programda bir değişken tanımladığımızda bu değişken RAM de kendine bir yer ayırır.Örneğin programda
int x=500; şeklinde bir değişken tanımladık. Bu yukardaki resimde olduğu gibi bir adreste kendine yer ayırır.A burada x in adresi olur. A değerini bilgisayar kendi atar.
Bize y=&x ifadesi verilmiştir. Bu bize x in adresinin y ye eşit olduğunu gösterir. "& " bu işaret x değerinin adresini ifade eder. Yani böylece y 2. resimdeki gibi A nın adresine eşit olmuş olur.
printf("%d\n",x); Bu ifadede x in değerini yazdırdık.
printf("%d\n",&x); Bu ifadede x in adresini yazdırdık.
printf("%d\n",y); Bu ifadede y nin değerini yazdırdık.
printf("%d\n",&y); Bu ifadede y nin adresini yazdırdık.
printf("%d\n",*y); Bu ifadede y nin pointer değerini yazdırdık. Peki bu denir? y en başta int *y; olarak tanımlandı. " * " işareti y nin pointer olduğunu gösterir. Bu değer y nin değerinin (A nın) RAM deki bir adresin değeridir. Yani A adresindeki değer 500 olduğundan *y de 500 olur.
NOT: x in pointerini bulamayız çünkü x pointer olarak tanımlanmamıştır.
Hiç yorum yok:
Yorum Gönder