Forum » Programiranje » [c]ohranjanje vrednosti spremenljivk
[c]ohranjanje vrednosti spremenljivk
kriko1 ::
V c-ju sem naredil en tak sklad, problem je ker kar dam na stack se ne ohrani, namreč
(stack == NULL) je vedno true.
Zakaj?
V main metodi (katera je v drugi datoteki) generiram podatke in nato kličem
push(sample data);
Rad bi da se tele spremenljivke v stack.c obnašajo kot v javinih classih - privat ter ohranjajo vrednost.
(stack == NULL) je vedno true.
Zakaj?
V main metodi (katera je v drugi datoteki) generiram podatke in nato kličem
push(sample data);
Rad bi da se tele spremenljivke v stack.c obnašajo kot v javinih classih - privat ter ohranjajo vrednost.
int MAX_STACK_SIZE = 2; static int stack_size = 0; static struct str_addr_line *stack = NULL; int push(struct str_addr *p) { if (stack_size < MAX_STACK_SIZE) { struct str_addr_line *q, *r; q = (struct str_addr_line*) malloc(sizeof(struct str_addr_line)); q->addrs = p; q->next = NULL; if (stack == NULL) { stack = q; printf("$stack_is_null\r\n"); return(0); } r = stack; while (r->next != NULL) { r = r->next; } r->next = q; stack_size++; printf("$stack_size: %d\r\n",stack_size); return(0); } else { // error return -1; } }
- spremenil: kriko1 ()
Mavrik ::
Am, saj pa se spremenljivke "stack" nikoli nikjer ne dotakneš. Verjetno bi jo moral nastavit na "q" a ne?
The truth is rarely pure and never simple.
joze67 ::
Saj ima if(stack==NULL) { stack=q; ... } (kjer mimogrede ne poveča stack_size, s čimer bo imel težave enkrat kasneje, ko ga bo hotel uporabiti).
kriko1 ::
Ja, to je manjša napaka (popravil), ampak ne bi smelo vplivat na sam stack, kateri je vedno NULL.
kriko1 ::
Ne, to tudi ne pomaga (*q). Zgleda da bom moral v main imeti tako strukturo ter jo podajat tem funkcijam.
Zgodovina sprememb…
- spremenil: kriko1 ()
Senitel ::
Kako točno imaš tole vse razparcelirano okrog? Ker jaz sem sprobal tole in v Visual Studio in GCC in v obeh primerih dela?
kriko1 ::
Ajej meni!
Deluje - v main sem imel še pop() takoj za tem ko sem karkoli dal noter,
logično da je bil sklad vedno NULL, saj se je pop() klical po vsakem vnosu podatkov.
Tako je če do štirih zjutraj programiraš :)
Deluje - v main sem imel še pop() takoj za tem ko sem karkoli dal noter,
logično da je bil sklad vedno NULL, saj se je pop() klical po vsakem vnosu podatkov.
Tako je če do štirih zjutraj programiraš :)
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [c] ne sprejme UDP paketaOddelek: Programiranje | 989 (577) | slovencl |
» | [c++] nalogeOddelek: Programiranje | 6235 (4775) | technolog |
» | [C] struct in int[] (strani: 1 2 )Oddelek: Programiranje | 7379 (6452) | MrBrdo |
» | Java in pošiljanje elektronske pošte!!Oddelek: Programiranje | 1363 (1264) | janez_janez |
» | [JAVA] zaustavitev niti (threadov)Oddelek: Programiranje | 3184 (3184) | morbo |