[C] pitanje u vezi ispisivanja unazad

[C] pitanje u vezi ispisivanja unazad

offline
  • Pridružio: 10 Mar 2009
  • Poruke: 101
  • Gde živiš: Podgorica

#include <stdio.h> int main() {     int n, i, red[i];         printf("Koliko brojeva: ");     scanf("%d", &n);         for (i=0; i<n; i++)     {              scanf("%s", &red[i]);              }              printf("\n\n\n");     for(i=n-1; i>=0; i--)     {              printf("%s, ", &red[i]);              }     getch(); }

Program radi odlicno, samo jedno pitanje.
for(i=n-1; i>=0; i--)     {              printf("%s, ", &red[i]);              }

Kod ovog dijela kada stavim da je i=n onda mi prije niza brojeva upise neke simbole
Citao sam negde da ako je red[6] to je od 0 do 5 sto znaci da je 6 prazan, zbog toga ako stavim da je i=n, pocece od red[6] a taj 'string' (?) je prazan i zbog toga ispise te neke simbole??



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Software developer
  • Pridružio: 06 Sep 2005
  • Poruke: 3800
  • Gde živiš: Beograd

int n, i, red[i];
Ne mozes u C-u da stavis red[i] kad "i" nije inicijalizovana. Mora da se u fazi prevodjenja zna kolika je duzina tog niza. Ovako se ne zna.

Kad imas red[n] , ispisujes
red[0],red[1]......,red[n-1]
To je n brojeva ili sta si vec definisao.
U tom slucaju red[n] moze biti bilo sta sto se u tom trenutku nalazi u memoriji posle n-1 mesta(moze da se desi da ostane tu neki broj, ali najcesce nije tako)



offline
  • Pridružio: 10 Mar 2009
  • Poruke: 101
  • Gde živiš: Podgorica

mislim da me nisi bas najvolje shvatio xD




Na to sam mislio.. Inace mene program radi sve ok kad je i=n-1
Posto ako imam red[3] = {2, 4, 6}
red[0] ima vrijednost 2
red[1] ima vrijednost 4
red[2] ima vrijednost 6
a red[3] nema vrijednost jer su obuhvaceni 0 1 2 to jest 3 predstavlja 3 (BIT??) mjesta

offline
  • Software developer
  • Pridružio: 06 Sep 2005
  • Poruke: 3800
  • Gde živiš: Beograd

red[3] ima vrednost onoga sta se trenutno nalazi u memoriji na poziciji(u ovom slucaju) red[0] + sizeof_integer * 3
Odnosno, red[3] ima u memoriji 3 uzastopna mesta velicine size_of_integer , najcesce 4 bajta, ti kad prakticno pristupas prva 4 bajta, druga 4, treca 4 i kad hoces sledeci(koji ne postoji) on ti cita naredna 4 bajta u memoriji sta god se u njima nalazilo....

Ko je trenutno na forumu
 

Ukupno su 1000 korisnika na forumu :: 26 registrovanih, 8 sakrivenih i 966 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: A.R.Chafee.Jr., babaroga, bestguarder, bobomicek, Bobrock1, bokisha253, BratSrpska, Dorcolac, ikan, kalens021, Kubovac, ljuba, Mi lao shu, milenko crazy north, Milos ZA, nenooo, Nikola70, pedja63, Povratak1912, Prometeus, samsung, Shinobi, Toper, tubular, vukovi, zillbg