Göstericiler(Pointers)-8
Gösterici Aritmetiği nedir?
Adreslerin artırılması ve
eksiltilmesi nasıl?
İki adres bilgisi toplanır mı?
Bir dizideki iki adres çıkartılabilir
mi?
Bir dizideki iki adres çıkartmasının
anlamı nedir?
/* Gösterici
Aritmetiği nedir?
* Adreslerin artırılması ve eksiltilmesi nasıl?
* İki adres bilgisi toplanır mı?
* Bir dizideki iki adres çıkartılabilir mi?
* Bir dizideki iki adres çıkartmasının anlamı
nedir?
*/
#include <stdio.h>
#include
<stdlib.h>
int main(void)
{
//Gösterici Aritmetiği : Adreslerin
artırılması ve eksiltilmesi
{
int *ptr = (int *)(0x100);
//ptr + 1 = 0x100 + sizeof(int);
printf("ptr + 1 =
0x%x\n", ptr + 1);
}
//diziler ve göstericiler aritmetiği
ile ilgili örnek
{
int a[10];
int i = 0;
for(i = 0; i <
10; ++i)
{
// *a = a[0];
*( a + 1 );
*(a+i) = i * 2;
printf("%d.
eleman = %d\n", i, a[i]);
}
//a + 1 = a + sizeof(a'nin türü')
}
/* iki adres bilgisi toplanmaz.
*
Ancak bir dizideki iki adres çıkartılabilir.
*
Bir dizideki iki adres çıkarması sayısal adres değeri vermez.
* Çıkartma
yapılan adresler arasındaki eleman sayısını verir.
*/
{
int a[10]; // 0, 1,2,3,4 =
5 *sizeof(int)
printf("a[5].
elemanin adresi : %p\n", &a[5]);
printf("a[0].
elemanin adresi : %p\n", &a[0]);
int result =
&a[5] - &a[0]; //sonuc 5.
(adres1-adres2)/sizeof(tür)
printf("result
:%d\n", result);
}
//GÖsterici aritmetiği özet
{
double *dPtr = (double *)0x100;
float *fPtr = (float *)0x200;
printf("dPtr + 1
= %p\n", dPtr + 1);
printf("fPtr + 1
= %p\n", fPtr + 1);
}
return EXIT_SUCCESS;
}
Hiç yorum yok:
Yorum Gönder