[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 939 korisnika na forumu :: 71 registrovanih, 5 sakrivenih i 863 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: 1MAP, 357magnum, Aquarius73, Arhiv, Asteker, avijacija, babaroga, bbrasnjo3, Belac91, Bob.Rock, boromir, BORUTUS, brundo65, BSD, Ca6otep, Chainsaw, Clouseau, cvrle312, Dorijan Grej, dovlafkcz, FOX, Georgius, Gheljda, havoc995, hyla, Inner-Cell, ivan979, jalos, K-1A, Kajzer Soze, kolateralnasteta, Kubovac, kunktator, Kuroje, lacko, majstro, Marko00, Martin543, mercedesamg, Metanoja, milos.cbr, Milos1389, Ne doznajem se u oružje, nuke92, oblivion, pandur, Panter, pein, Piicoki, Pohovani_00, Povratak1912, PrincipL, pristinski korpus, royst33, ruma, sekretar, Sevetar, sickmouse, Sir Budimir, Titan, travisrise, umpah-pah, vaci, vathra, vjetar, vlad the impaler, vladaa012, Vrač, vukan0799, zmajbre, zrno