3 Şubat 2016 Çarşamba

void Göstericiler

C void Göstericiler

Türden bağımsız işlem yapmayı sağlayan void göstericiler(void *) nasıl kullanılır?
void göstericilerde dikkat edilecek noktalar nelerdir?
void göstericiler ile adres(&) ve içerik(*) operatörleri kullanılmaz.
void gösterciler ile toplama yapılamaz.
void göstericiler ile çıkartma yapılamaz.
Uygulamada ilk süslü parantezde void göstericiye herhangi bir türden göstericinin atanması.
ikinci süslü parantezde dikkat edilecek noktalar.
üçüncü süslü paranetzde aritmetik toplama
dördüncü süslü parantezde adres çıkarma işlemi anlatılmıştır.


/*Türden bağımsız işlem yapmayı sağlayan void göstericiler(void *) nasıl kullanılır?
void göstericilerde dikkat edilecek noktalar nelerdir?
void göstericiler ile adres(&) ve içerik(*) operatörleri kullanılmaz.
void gösterciler ile toplama yapılamaz.
void göstericiler ile çıkartma yapılamaz.
Uygulamada ilk süslü parantezde void göstericiye herhangi bir türden göstericinin atanması.
ikinci süslü parantezde dikkat edilecek noktalar.
üçüncü süslü paranetzde aritmetik toplama
dördüncü süslü parantezde adres çıkarma işlemi anlatılmıştır.*/
                                                                                                     
#include <stdio.h>
#include <stdlib.h>

int main(void) {
            //void türünden göstericiler
            //türden bağımsız işlem yapmak
            {
                        char name[] = "fikret";
                        void *ptr = name; //geçerli
                        int *ptr1 = ptr; //geçerli
            }
            // void göstericisi dikkat edilecek noktalar
            {
                        int number[100]; //int *
                        void *ptr = number;

                        number[0] = 1;
                        *number = 2;
                        number[10] = 12;

                        ptr[0] = 2;
                        *ptr = 3;
            }
            //void göstericileri le aritmetik toplama yapılmaz.
            // void göstericiler sadece adresin sayısal değerini tutar.
            {
                        int number[10];
                        void *ptr = number;

                        *number = 1;
                        // number'in adresi 0x100  (number + 1) = 0x104
                        *(number + 1) = 2;

                        ptr = ptr + 1; //yanlis
            }
            //void gösterciler ile çıkartma
            {
                        int number[10];
                        void *ptr = number;

                        // 40 byte değildir. sonuc 10 = 40 / sizeof(int)
                        //number = 0x100 number[1] = 0x104
                        int eleman = (&number[1]) - (&number[0]);
                        printf("eleman: %d\n", eleman);
                        //number[9] = *(number + 9)
                        int eleman1 = (&ptr[9]) - (&ptr[0]);
                        printf("eleman1: %d\n", eleman1);
            }
            // geri dönüş void * olabilir.
            // parametre olarak void * kullanilabilir
            return EXIT_SUCCESS;
}

//
void *func(void *pr1, void *pr2)
{
            void *ptr;

            return ptr;
}




Hiç yorum yok:

Yorum Gönder