31 Aralık 2015 Perşembe

Göstericiler(Pointers)-4

Göstericiler(Pointers)-4

Dizi isimleri nesne belirtir mi?
Dizi isimlerinin belirttiği adres nasıl kullanılır?
Dizi isimlerinin gösterici nesnesine atanması nasıl?

Diziler fonksiyonlara nasıl parametre olarak geçirilir?


/*Açıklama : Dizi isimleri nesne belirtir mi?
 * Dizi isimlerinin belirttiği adres nasıl kullanılır?
 * Dizi isimlerinin gösterici nesnesine atanması nasıl?
 * Diziler fonksiyonlara nasıl parametre olarak geçirilir?
 */
#include <stdio.h>
#include <stdlib.h>
void showArray(int *ptr, int size)
{
       int i = 0;
       for(i = 0; i < 10; ++i)
       {
             printf("%d. eleman : %d\n", i, ptr[i]);
       }
}


int main(void)
{
       /* Dizi isimleri nesne ifade etmez. Dizi isimleri sabit bir
        * adres değeri ifade eder. Bu yüzden sol taraf ifadesi
        * olarak kullanılamaz.Dizi elamanlari bir nesne belirtir.
        */
       {
             char name[10]; //dizi ismi nesne belirtmez.
             //dizi ismi dizinin başlangıç adresini belirtir.
             //name, (char *) tpinden bir adres ifade eder. 0x100 = name
             //name[0] bir nesne ifade eder.
             //name = &name[0];
             printf("name = %p\n", name);
             printf("name[0]'in adresi= %p\n", &name[0]);
             //++name; //hatali.
       }
       /* Dizi isimlerinin adres bilgisinin göstericilere atanması.
        * Dizi isimleri fonksiyonlara geçirilirken göstericiler
        * kullanılır.
        */
       {
             int i = 0;
             int numbers[10] = {1,2,3,5,6,7,8,9,11,111};
             //numbers (int *) tipinden bir adres ifade ediyor
             int *ptr = numbers;

             //numbers göre elemanlarin ekrana yazilmasi
             for(i = 0; i < 10; ++i )
             {
                    printf("%d. eleman : %d\n", i, numbers[i]);
             }
             //ptr göre dizi elamlarini yazilmasi
             showArray(numbers, 10);
       }
       // Diziler kendi türlerinden göstericilere atanması uygundur.
       {
             char ch[100];
             char *pCh = ch;
             float money[100];
             float *pMoney = money;
       }

       //Not: Dizi isimleri nesne belirtmmez.Ancak dizi elemanlari nesne ifade eder.
       // int numbers[10];
       //numbers , nesne ifade etmez. numbers[0], nesne ifade eder.
       return EXIT_SUCCESS;
}

Konu ile ilgili video eğitimi izlemek için tıklayınız.

Hiç yorum yok:

Yorum Gönder