kajla Milorad Janković Beograd
Član broj: 445 Poruke: 909 *.InfoSky.Net
|
Imam ovakav program:
const int twodim[10][6]=
{
{1,2,3,4,5,6},
{7,8,9,10,11,12},
{13,14,15,16,17,18},
{19,20,21,22,23,24},
{25,26,27,28,29,30},
{31,32,33,34,35,36},
{37,38,39,40,41,42},
{43,44,45,46,47,48},
{49,50,51,52,53,54},
{55,56,57,58,59,60}
};
main()
{
clrscr();
print_2(twodim,6,10);
getch();
return 0;
}
E sad cu dati 4 verzije funkcije print_2() od toga prve dve rade,
a druge dve nerade. Pa ako neko moze da objasni zasto ove zadnje dve
nerade.
(sve 4 funkcije su iste razlika je samo u deklarisanju prvog argumenta)
PS. nikako mi nije jasno kako ako imam:
int twodim[10][6];
i sad ovaj izraz je tacan: (leva strana JESTE jednaka desnoj).
(twodim + 1)==*(twodim + 1);
zasto?
evo sad 4 verzije funkcije print_2():
print_2(array,x,y) /*ove prve dve verzije daju iste rezultate*/
int array[][6],x,y;
{
int hor,ver;
for (ver=0;ver<y;ver++)
for (hor=0;hor<x;hor++)
printf("%it",*(*(array+ver)+hor));
return 0;
}
print_2(array,x,y)
int (*array)[6],x,y;
{
int hor,ver;
for (ver=0;ver<y;ver++)
for (hor=0;hor<x;hor++)
printf("%it",*(*(array+ver)+hor));
return 0;
}
print_2(array,x,y) /*ove zadnje dve verzije daju iste rezultate*/
int *array[6],x,y;
{
int hor,ver;
for (ver=0;ver<y;ver++)
for (hor=0;hor<x;hor++)
printf("%it",*(*(array+ver)+hor));
return 0;
}
print_2(array,x,y)
int **array,x,y;
{
int hor,ver;
for (ver=0;ver<y;ver++)
for (hor=0;hor<x;hor++)
printf("%it",*(*(array+ver)+hor));
return 0;
}
Kako da deklarisem prvi argument ako ne znam koliko clanova ima niz?
naravno funkcija print_2() se uvek moze napisati ovako (posto je
dvo-dimenzionali niz smesten kontinualno u memoriji) :
print_2(array,x,y)
int *array,x,y;
{
int i;
for (i=0;i<x*y;i++)
printf("%it",*(array+i) );
return 0;
}
poz.
[Ovu poruku je menjao kajla dana 07-13-2001 u 01:52 PM GMT]
|