Velkost pola, C

Programovacie jazyky, rady, poradňa...
Aiden
Darca
Darca
Používateľov profilový obrázok
Príspevky: 2213
Registrovaný: 06 apr 2007, 14:28

Velkost pola, C

Príspevok od používateľa Aiden »

Vedel by mi niekto vysvetlit, ako sa mi moze podarit takyto program skompilovat a aj spustit? Jedna sa mi hlavne o tu cas s definovanim velkosti pola. Ocakavane problemy s takymto riesenim nenastali a to som skusal kompilovat v 3 roznych programoch :smt104

Kód: Vybrať všetko

main()
{
  int i,n;
  printf("Pocet prvkov: \n");
  scanf("%d",&n);


  int pole[n];

  for(i=0;i<n;i++){
      pole[i]=i;
      printf("%d, ",pole[i]);
                  }
   


  system("pause");
  return 0;
}
neutronmind
Expert
Expert
Príspevky: 189
Registrovaný: 05 aug 2008, 14:17

Re: Velkost pola, C

Príspevok od používateľa neutronmind »

Aiden
Darca
Darca
Používateľov profilový obrázok
Príspevky: 2213
Registrovaný: 06 apr 2007, 14:28

Re: Velkost pola, C

Príspevok od používateľa Aiden »

ked funguje nieco taketo jednoduche, aky ma zmysel v Ccku pouzivat klasicke dynamicke polia?
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: Velkost pola, C

Príspevok od používateľa audiotrack »

toto niečo jednoduché je v inej časti pamäte, musí to podporovať kompilátor... A stále tu nemáš možnosť zmenšiť/zväčšiť to za behu keby si nemal dynamické polia
Pilifo
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 7001
Registrovaný: 12 okt 2007, 16:41
Kontaktovať používateľa:

Re: Velkost pola, C

Príspevok od používateľa Pilifo »

Presne tak, ako píše audiotrack. Ak si napr. pri jednom spustení potrebuješ pamätať milión záznamov a pri inom spustení iba 5, tak nie je najefektívnejšie vytvárať vždy pole, ktoré má vyhradené viac pamäte, ako potrebuje. A preto sa to pri dynamických poliach robí tak, že sa naalokuje pamäť pre istý počet záznamov a keď pamäť na ďalšie záznamy už nie je, tak sa dynamicky naalokuje ďalší blok pamäte, a takto to pokračuje.
Napísať odpoveď