» »

C problem

C problem

CHAOS ::

Funkcija bi mi pac naj izgradila binarno drevo. Klicana funkcija dodaj deluje pravilno. Problem je sledec; ko poskusim compilat kodo, mi pri tej funkciji javi napako:
array subscript is not an integer

Kaj to pomeni, sploh mi ni jasno kaj pocnem narobe. Do problema bi naj prislo v vrstici:
koren = dodaj(koren, elementi[p]);

What to do? :8)

tnx,

Samo

struct vozlisce *izgradi(struct vozlisce *koren, int elementi[])
{
    int *p=&elementi[0];
    while( p != NULL) {	
      koren = dodaj(koren, elementi[p]);
			++p;
		}
    return(koren);
}
'They have computers, and they may have other weapons of mass destruction.'
  • spremenil: CHAOS ()

OwcA ::

p je kazalec ne število. Dereferenciraj ga.

elementi[p] mi deluje čudno. Če je p kazalec na element, kako lahko potem vrednost tega elementa vpliva na strukturo drevesa? Kaj če v drevo s tremi elementi shranim vrednost 8?
Otroška radovednost - gonilo napredka.

CHAOS ::

Evo, tole sem hotel narediti.

struct vozlisce *izgradi(struct vozlisce *koren, int elementi[])
{
    int *p=elementi;
    while( *p != NULL) {	
      koren = dodaj(koren, *p++);
		}
    return(koren);
}


To je struktura.

struct vozlisce
{
  int vrednost;
  struct vozlisce *levo;
  struct vozlisce *desno;
};


struct vozlisce *koren

Sepravi, da klicem
 dodaj(koren, *p++) 
, kjer mi kazalec p kaze element polja integerjev.
'They have computers, and they may have other weapons of mass destruction.'

Zgodovina sprememb…

  • spremenil: CHAOS ()

Gundolf ::

Z NULL se primerja vrednost pointerja, in ne vrednost spremenljivke na katero kaže.
struct vozlisce *izgradi (struct vozlisce *koren, int elementi[])
{
   int *p=elementi;
   while (p != NULL) {	
      koren = dodaj(koren, *p++);
   }
   return(koren);
}


To da "p kaze element polja integerjev" se vidi iz kode raje povej kako je definirana funkcija dodaj. Ali je
struct vozlisce* dodaj (struct vozlisce* koren, int* element)
ali
struct vozlisce* dodaj (struct vozlisce* koren, int element)

Zgornja rešitev je če uporabljaš drugo obliko. Če uporabljaš prvo obliko funkcije dodaj potem pa odstrani * pred p++. Pa pointerje si še malo bolje poglej.


Vredno ogleda ...

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

DIJKSTROV_ALGORITEM

Oddelek: Programiranje
142213 (1447) krneki0001
»

[C] kazalčni seznam

Oddelek: Programiranje
123081 (2895) MrBrdo
»

[C] Povezani seznami in kazalci

Oddelek: Programiranje
242563 (2130) Good Guy
»

[C] Narascajoce sortiranje linearnega seznama

Oddelek: Programiranje
71858 (1747) Jebiveter
»

[NALOGA][C] fri-vsp - strukture (struct)

Oddelek: Programiranje
101553 (1394) Vesoljc

Več podobnih tem