4
6. POKAZIVAČI 1. Na ovom primjeru ćemo prikazati dvije promjenjive X i Y, koje se nalaze negdje u memoriji. Pomoću operatora adresiranja (&) pokušaćemo odrediti na kojoj memorijskoj lokaciji se nalaze. #include <stdio.h> #include <stdlib.h> int main() { int x = 3; int y = 7; // ispisujemo vrijednost promjenjivih printf("x = %d\n",x); printf("y = %d\n",y); // ispisujemo memorijske adrese promjenjivih printf("x = %p\n",&x); printf("y = %p",&y); } Kao izlaz iz programa dobićemo prvo vrijednosti promjenjivih x i y, a onda i njihove memorijske lokacije. Memorijske lokacije u računaru obično se predstavljaju heksadecimalnim brojevima, pa zbog toga postavljamo %p umjesto %d. Zadatak: Napisati standardni program koji sabira ili oduzima dva broja, a rezultat smješta u neku promjenjivu. Nakon što je program izvršen, dopisati još jedan dio programa koji ćeočitavati memorijske adrese svih promjenjivih korištenih u programu. Drugim rječima, ovaj dio programa će nam tačno reći gdje je locirana svaka promjenjiva u memoriji.

06. Pokazivaci.pdf

Embed Size (px)

Citation preview

Page 1: 06. Pokazivaci.pdf

6. POKAZIVAČI 1. Na ovom primjeru ćemo prikazati dvije promjenjive X i Y, koje se nalaze negdje u memoriji. Pomoću operatora adresiranja (&) pokušaćemo odrediti na kojoj memorijskoj lokaciji se nalaze.  

#include <stdio.h> #include <stdlib.h>  int main() {     int x = 3;     int y = 7;     // ispisujemo vrijednost promjenjivih     printf("x = %d\n",x);     printf("y = %d\n",y);      // ispisujemo memorijske adrese promjenjivih     printf("x = %p\n",&x);     printf("y = %p",&y); } 

 

Kao izlaz iz programa dobićemo prvo vrijednosti promjenjivih x i y, a onda i njihove memorijske lokacije. Memorijske lokacije u računaru obično se predstavljaju heksadecimalnim brojevima, pa zbog toga postavljamo %p umjesto %d. 

 

Zadatak: 

Napisati standardni program koji sabira ili oduzima dva broja, a rezultat smješta u neku promjenjivu. Nakon što je program izvršen, dopisati još jedan dio programa koji će očitavati memorijske adrese svih promjenjivih korištenih u programu. Drugim rječima, ovaj dio programa će nam tačno reći gdje je locirana svaka promjenjiva u memoriji. 

   

Page 2: 06. Pokazivaci.pdf

2.  Napisati program koji sabira dva broja koristeći pokazivačke promjenjive.  

#include <stdio.h> #include <stdlib.h>  int main() {     int x,y;     int *px,*py;     // svakom pokazivaču pridružujemo po jednu memorijsku lokaciju     px = &x;     py = &y;     // unosimo x i y direktno u pokazivače, koji preko memorijske lokacije prosleđuju unesenu vrijednost    // do prave promjenjive     printf("Unesite x: ");     scanf("%d",px);     printf("Unesite y: ");     scanf("%d",py);      int rezultat;  /* rezultat računamo kao zbir vrijednosti koje se nalaze na adresnim lokacijama koje pokazuju    pokazivači */     rezultat = *px + *py;     printf("Rezultat: %d",rezultat); } 

  Zadatak: Po uzoru na ovaj program napisati programe koji: 

• sabiraju 3 broja 

• oduzimaju 2 broja 

• množe 2 broja i pronalaze ostatak 

• rješavaju jednačinu x+2y‐z preko pokazivača naravno  Napomena: Pravu primjenu pokazivača ćemo vidjeti tek u sledećoj oblasti, kada budemo pisali funkcije. Do tada je potrebno ovladati sintaksom pisanja i korišćenja pokazivačkih promjenjivih. Poznavanje osnovnih pravila  i načina na koje funkcionišu pokazivačke promjenjive je ključno za dalji rad nastavnog materijala.  

Page 3: 06. Pokazivaci.pdf

3. Grafički prikaz mem 

 

orije, prilikomm korišćenja oosnovnih opeeracija sa pokazivačkim proomjenjivim. 

 

    

Page 4: 06. Pokazivaci.pdf