» »

[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.

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.

misek ::

Eh, napaka.

Zgodovina sprememb…

  • spremenil: misek ()

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š :)


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[c] ne sprejme UDP paketa

Oddelek: Programiranje
7980 (568) slovencl
»

[c++] naloge

Oddelek: Programiranje
476139 (4679) technolog
»

[C] struct in int[] (strani: 1 2 )

Oddelek: Programiranje
657301 (6374) MrBrdo
»

Java in pošiljanje elektronske pošte!!

Oddelek: Programiranje
51350 (1251) janez_janez
»

[JAVA] zaustavitev niti (threadov)

Oddelek: Programiranje
223170 (3170) morbo

Več podobnih tem