Forum » Programiranje » 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?
tnx,
Samo
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?
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?
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.
To je struktura.
struct vozlisce *koren
Sepravi, da klicem
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.
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.
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 ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | DIJKSTROV_ALGORITEMOddelek: Programiranje | 2213 (1447) | krneki0001 |
» | [C] kazalčni seznamOddelek: Programiranje | 3081 (2895) | MrBrdo |
» | [C] Povezani seznami in kazalciOddelek: Programiranje | 2563 (2130) | Good Guy |
» | [C] Narascajoce sortiranje linearnega seznamaOddelek: Programiranje | 1858 (1747) | Jebiveter |
» | [NALOGA][C] fri-vsp - strukture (struct)Oddelek: Programiranje | 1553 (1394) | Vesoljc |