» »

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.:D
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).0:)
Bolje vrabec v roki kot (p)tič v riti!
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

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
Bolje vrabec v roki kot (p)tič v riti!
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.
Bolje vrabec v roki kot (p)tič v riti!
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.

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


Vredno ogleda ...

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

C - shranjevanje rezultatov iz baze v array

Oddelek: Programiranje
71048 (747) Randomness
»

[C] malloc, sigsegv

Oddelek: Programiranje
6845 (647) Andrej4
»

[C] Seznam s poljem

Oddelek: Programiranje
232013 (1493) aceton
»

C strukture, kazalci naloga pomoc

Oddelek: Programiranje
51236 (1131) DavidJ
»

[C] Povezani seznami in kazalci

Oddelek: Programiranje
242217 (1784) Good Guy

Več podobnih tem