31 Aralık 2015 Perşembe

Göstericiler(Pointers)-8

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;

}

Göstericiler(Pointers)-8 ile ilgili eğitim videosu izlemek için tıklayınız.

Hiç yorum yok:

Yorum Gönder