Programiranje u C-u

  

POKAZIVAČI
Pokazivači nam omogućavaju da prikažemo složene strukture podataka, da mijenjamo vrijednosti argumenata funkcije, da radimo sa dinamički alociranom memorijom, te da efektivnije radimo sa nizovima. Pokazivač nam osigurava indirektan način pristupa vrijednosti određenog podatka. Pogledajmo kako pokazivači rade na jednostavnom primjeru,

        int  count = 10, *int_pointer;
deklariran je integer count koji ima vrijednost 10, i pokazivač nazvan int_pointer. Upamtite da prefiks * definira da je to pokazivač. Da bi uspostavili indirektnu vezu između int_pointer i count, koristi se prefiks &, tj. 
        int_pointer = &count
Ovim je pridružena memorijska adresa count pokazivaču  int_pointer, a ne stvarna vrijednost count koja se nalazi na toj adresi.

POKAZIVAČI POKAZUJU MEMORIJSKE ADRESE, A NE VRIJEDNOSTI VARIJABLE!
Da bi pridružili vrijednost count korištenjem  int_pointer, koristi se * za pridruživanje, npr.

        x = *int_pointer;
Pošto  int_pointer je postavljen da pokazuje memorijsku adresu count, ova operacija ima učinak pridruživanja sadržaja memorijske adrese na koju pokazuje  int_pointer  varijabli x, pa nakon operacije variabla x ima vrijednost 10

        #include <stdio.h>

        main()
        {
                int count  = 10, x, *int_pointer;

                /* pridruživanje memorijske adrese count pokazivaču int_pointer */
                int_pointer = &count;
               
                /* pridruživanje vrijednosti pohranjene na adresi na koju pokazuje  int_pointer varijabli x */
                x = *int_pointer;
                printf("count = %d, x = %d\n", count, x);
        }
Ovim, međutim, nije pokazana dobra strana uporabe pokazivača.

Slijedeći program pokazuje drugi način uporabe pokazivača, ovaj put sa znakovima,

        #include <stdio.h>
        main()
        {
                char c = 'Q';
                char *char_pointer = &c;
                printf("%c %c\n", c, *char_pointer);
                c = 'Z';
                printf("%c %c\n", c, *char_pointer);
                *char_pointer = 'Y';
                /* pridruživanje Y kao sadržaja memorijske adrese na koju pokazuje  char_pointer  */
                printf("%c %c\n", c, *char_pointer);
        }

©Copyright B Brown. 1984-1998. All rights reserved.