Pomoc, malo ucimo C na faxu i ima jedan zadatak ali na zalost u knjizi nije detaljno objasnjeno ovo poglavlje i sad mi to nedostaje. Skinuo sam neke knjige sa neta i nije lose ali moram da pitam. Pocetak zadatka glasi ovako: treba da se formiraju 2 celobrojna niza preko standardnog ulaza koristeci funkcije za dinamicku dodelu memorije. Ja sam uradio sledece:
#include <stdio.h>
void main()
{
int niz1[10], niz2[10];
int *p,i,;
for (i=0;i<5;i++)
{
p=(int*)malloc(sizeof(int));
printf("\nUnesi %d. clan niza: ",i+1);
fscanf(stdin,"%d",&p);
niz1=p;
}
for (p=niz1;p<niz1+5;p++)
printf("%d",*p);
}
Ovo sam dosta kasno radio i moguce da moze i mnogo lakse ali me interesuje da li je i ovaj nacin tacan, a i koji je laksi nacin. Kako recimo calloc da upotrebim da rezervise 5 ili 10 mesta u koja cu kasnije da strpam brojeve ? Naravno ovo nije ceo posao, nego posto sam zurio samo sam proverio da li radi za jedan niz a posle cu ja lako da napravim jos jedan. Nastavak zadatka je da se nizovi spoje i pronadje najveca vrednost ali to nije toliki problem za sada. Zasto to pitam, ova funkcija rezervise prostor za tip int u memoriji i to u toku izvrsavanja programa, a kod statickih varijabli se to uradi po pokretanju programa i memorija ostaje rezervisana sve dok traje program. Buni me, pa zar samom deklaracijom "niz1[10]" mi vec ne rezervisemo prostor za niz od 10 elemenata i da taj prostor ostaje dok je program pokrenut ? jer je deklaracijom vec unapred rezervisano mesto, a dok program ne dodje do malloc-a on vec pre toga ima rezervisano mesto, zar ne ? Ili to dok prevodilac unapred prevodi program procita pa zna da ne mora ? Ne razumem.
#include <stdio.h>
void main()
{
int niz1[10], niz2[10];
int *p,i,;
for (i=0;i<5;i++)
{
p=(int*)malloc(sizeof(int));
printf("\nUnesi %d. clan niza: ",i+1);
fscanf(stdin,"%d",&p);
niz1=p;
}
for (p=niz1;p<niz1+5;p++)
printf("%d",*p);
}
Ovo sam dosta kasno radio i moguce da moze i mnogo lakse ali me interesuje da li je i ovaj nacin tacan, a i koji je laksi nacin. Kako recimo calloc da upotrebim da rezervise 5 ili 10 mesta u koja cu kasnije da strpam brojeve ? Naravno ovo nije ceo posao, nego posto sam zurio samo sam proverio da li radi za jedan niz a posle cu ja lako da napravim jos jedan. Nastavak zadatka je da se nizovi spoje i pronadje najveca vrednost ali to nije toliki problem za sada. Zasto to pitam, ova funkcija rezervise prostor za tip int u memoriji i to u toku izvrsavanja programa, a kod statickih varijabli se to uradi po pokretanju programa i memorija ostaje rezervisana sve dok traje program. Buni me, pa zar samom deklaracijom "niz1[10]" mi vec ne rezervisemo prostor za niz od 10 elemenata i da taj prostor ostaje dok je program pokrenut ? jer je deklaracijom vec unapred rezervisano mesto, a dok program ne dodje do malloc-a on vec pre toga ima rezervisano mesto, zar ne ? Ili to dok prevodilac unapred prevodi program procita pa zna da ne mora ? Ne razumem.