Forum » Programiranje » spet problem v Cju ... kazalci
spet problem v Cju ... kazalci
matic ::
Sej verjamem da sem tup itd, sam ne morem pogruntat v cem je fora.. compiler pravi da v funkciji absi in to je dereferencing pointer to incomplete type .. sej zastopim angesk sam kaj je tuki incompltete type!?!? Evo koda:
#include
#define newline printf("\n")
main() {
struct kmpl {
int x;
int y;
};
struct kmpl *ptr;
newline;
printf("Vpisi x: ");
scanf("%d",&ptr->x);
printf("Vpisi y: ");
scanf("%d",&ptr->y);
newline;
printf("Abs vrednost |z| = %d",absi(ptr));
newline;
newline;
}
int absi(st)
struct kmpl *st;
{
return(sqrt((st->x)*(st->x)+(st->y)*(st->y)));
}
jeti ::
V keri vrstici ti pa javi napako?
.....
ah že vem se mi zdi...
pri deklaraciji funkcije absi v oklepaju nisi povedal, kaj za hudiča je tale st.
Moraš povedati še, katerega tipa je.
pa tale
struct kmpl *st;
mi je tudi sumljiv...ta tip izven funkcije main ni viden, ker si ga tam not deklariral (men se zdi no, sm 95% prepričan).
.....
ah že vem se mi zdi...
pri deklaraciji funkcije absi v oklepaju nisi povedal, kaj za hudiča je tale st.
Moraš povedati še, katerega tipa je.
pa tale
struct kmpl *st;
mi je tudi sumljiv...ta tip izven funkcije main ni viden, ker si ga tam not deklariral (men se zdi no, sm 95% prepričan).
Bolje vrabec v roki kot (p)tič v riti!
Včasih je bil http://come.to/jeti
Včasih je bil http://come.to/jeti
matic ::
hmm ja.. sej sem podal
int absi(st)
struct kmpl *st;
absi vraca int (pac rezultat), argument st pa je tipa struct kmpl (2. vrstica!) .. tako nej bi bilo kao pravilno deklerirano po knjigi od Cja, lahko pa seveda tut:
int absi(struct kmpl *st)
mozno pa je res da je tistih 85 da ni znan izven main() ... bebo.. bo kr skor 100% grem prevert! Hvala! ;) + hvala za pomoc s kazalci.. naslednji post! tist malloc sem rabu.. sej to je verjetno // upam v knjiznici stdio.h!(?) TNX
int absi(st)
struct kmpl *st;
absi vraca int (pac rezultat), argument st pa je tipa struct kmpl (2. vrstica!) .. tako nej bi bilo kao pravilno deklerirano po knjigi od Cja, lahko pa seveda tut:
int absi(struct kmpl *st)
mozno pa je res da je tistih 85 da ni znan izven main() ... bebo.. bo kr skor 100% grem prevert! Hvala! ;) + hvala za pomoc s kazalci.. naslednji post! tist malloc sem rabu.. sej to je verjetno // upam v knjiznici stdio.h!(?) TNX
jeti ::
Aja, sej res....v C-ju se lahko tut tko deklarira kokr si ti...nam je reku profesor, da to lahko kr pozabno, da nej deklariramo na 2. način.
Ja, napak bo verjetn res v tem, da se tvoj tip ne vidi izven funkcije main(). Raje bi ga definiral zunaj nje:
typedef struct blabla {
vsfg
gfs
} NovoImeTipa;
Sedaj je ta struktura na voljo vsem funkcijam v kodi, in sicer pod imenom NovoImeTipa.
primer deklaracije spremenljivke:
NovoImeTipa spremenljivkaX
Ja, napak bo verjetn res v tem, da se tvoj tip ne vidi izven funkcije main(). Raje bi ga definiral zunaj nje:
typedef struct blabla {
vsfg
gfs
} NovoImeTipa;
Sedaj je ta struktura na voljo vsem funkcijam v kodi, in sicer pod imenom NovoImeTipa.
primer deklaracije spremenljivke:
NovoImeTipa spremenljivkaX
Bolje vrabec v roki kot (p)tič v riti!
Včasih je bil http://come.to/jeti
Včasih je bil http://come.to/jeti
jeti ::
Aja, sej res....v C-ju se lahko tut tko deklarira kokr si ti...nam je reku profesor, da to lahko kr pozabno, da nej deklariramo na 2. način.
Ja, napak bo verjetn res v tem, da se tvoj tip ne vidi izven funkcije main(). Raje bi ga definiral zunaj nje:
typedef struct blabla {
vsfg
gfs
} NovoImeTipa;
Sedaj je ta struktura na voljo vsem funkcijam v kodi, in sicer pod imenom NovoImeTipa.
primer deklaracije spremenljivke:
NovoImeTipa spremenljivkaX
tako je malo bolj praktično, saj ti ni treba vedno pisati struct ImeStrukture ampak samo ImeStrukture.
aja, malloc je kr zmeraj na voljo, ni treba nobene knjižnice vključit.
Ja, napak bo verjetn res v tem, da se tvoj tip ne vidi izven funkcije main(). Raje bi ga definiral zunaj nje:
typedef struct blabla {
vsfg
gfs
} NovoImeTipa;
Sedaj je ta struktura na voljo vsem funkcijam v kodi, in sicer pod imenom NovoImeTipa.
primer deklaracije spremenljivke:
NovoImeTipa spremenljivkaX
tako je malo bolj praktično, saj ti ni treba vedno pisati struct ImeStrukture ampak samo ImeStrukture.
aja, malloc je kr zmeraj na voljo, ni treba nobene knjižnice vključit.
Bolje vrabec v roki kot (p)tič v riti!
Včasih je bil http://come.to/jeti
Včasih je bil http://come.to/jeti
hatch ::
Deklariral si pointer zanj pa nisi allociral pomnilnika...
ptr = (struct kmpl*) malloc(sizeof(struct kmpl));
v c++ pa lahko uporabis new namesto malloc, samo je veliko manj flexibilen.
ptr = (struct kmpl*) malloc(sizeof(struct kmpl));
v c++ pa lahko uporabis new namesto malloc, samo je veliko manj flexibilen.
hatch ::
Se to..
lahko naredis nov tip
in sicer to naredis tako
typedef struct kmpl_p {
int x;
int y;
} kmpl;
// kmpl je sedaj TIP spremenljivke in ne spremenljivka sama. kot recimo "int"
kmpl *ptr;
// potem se bolj enostavno alloca...
ptr = (kmpl*) malloc(sizeof(kmpl));
--------------------
pri tvojem primeru pa niti ne rabis pointerjev ubistvu
lahko naredis
struct kmpl {
int x;
int y;
} sp;
sp.x = 5; //uporabis . namesto -> za structe
naprimer a->x je popolnoma enako kot (*a).x
lahko naredis nov tip
in sicer to naredis tako
typedef struct kmpl_p {
int x;
int y;
} kmpl;
// kmpl je sedaj TIP spremenljivke in ne spremenljivka sama. kot recimo "int"
kmpl *ptr;
// potem se bolj enostavno alloca...
ptr = (kmpl*) malloc(sizeof(kmpl));
--------------------
pri tvojem primeru pa niti ne rabis pointerjev ubistvu
lahko naredis
struct kmpl {
int x;
int y;
} sp;
sp.x = 5; //uporabis . namesto -> za structe
naprimer a->x je popolnoma enako kot (*a).x
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | C - shranjevanje rezultatov iz baze v arrayOddelek: Programiranje | 1220 (919) | Randomness |
» | [C] malloc, sigsegvOddelek: Programiranje | 1051 (853) | Andrej4 |
» | [C] Seznam s poljemOddelek: Programiranje | 2459 (1939) | aceton |
» | C strukture, kazalci naloga pomocOddelek: Programiranje | 1462 (1357) | DavidJ |
» | [C] Povezani seznami in kazalciOddelek: Programiranje | 2563 (2130) | Good Guy |