12.07.2015 Views

Programski jezik C - Pmf

Programski jezik C - Pmf

Programski jezik C - Pmf

SHOW MORE
SHOW LESS
  • No tags were found...

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

168 POGLAVLJE 10. POLJAvoid readinput(int m[][MAXY], int n, int m)Naime, broj redaka nije bitan za adresiranje elemenata matrice. Sve štofunkcija mora znati je da se element m[i][j] nalazi na l-tom mjestu, gdjeje l=i*MAXY+j. Stoga je samo MAXY nužan pri pozivu funkcije.Konačno, budući da je u deklaraciji funkcije polje isto što i pokazivač naprvi element polja (stoga što se pri pozivu funkcije vrši implicitna konverzijapolja u pokazivač) možemo istu funkciju deklarirati na treći način:void readinput(int (*m)[MAXY], int n, int m)Zagrade su nužne da nebismo dobili “polje pokazivača”.Posve analogno, kod višedimenzionalnih polja funkcija mora znati svedimenzije polja osim prve. Pri tome treba uočiti da dimenzije moraju bitikonstantni izrazi. To je bitno ograničenje ANSI-C- <strong>jezik</strong>a.Sljedeći program ilustrira inicijalizaciju trodimenzionalnog polja.#include char A[][2][2]={ {{’a’,’b’},{’c’,’d’}},{{’e’,’f’},{’g’,’h’}}};void f(char a[2][2]);int main(void){printf("Matrica A[0]:\n");f(A[0]);printf("Matrica A[1]:\n");f(A[1]);return 0;}void f(char a[2][2]){printf("%c %c\n",a[0][0],a[0][1]);printf("%c %c\n",a[1][0],a[1][1]);}Uočimo da prvu dimenziju u deklaracijichar A[][2][2]={ {{’a’,’b’},{’c’,’d’}},{{’e’,’f’},{’g’,’h’}}};prevodioc može izračunati, ali sve ostale dimenzije su nužne.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!