Problem s pointerami – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Problem s pointerami – C / C++ – Fórum – Programujte.comProblem s pointerami – C / C++ – Fórum – Programujte.com

 

Guy
~ Anonymní uživatel
4 příspěvky
4. 4. 2011   #1
-
0
-

#include <stdio.h>

#include <stdlib.h>

typedef struct weapon
{
int weaponEquiped;
};

typedef struct player_st
{
char name[9];
weapon *zbran;
};

int main()
{
player_st player;
player.zbran->weaponEquiped=1;
printf("%d", player.zbran->weaponEquiped);

system("pause");
return 0;
}

Kompilator to skompiluje, neviete kde je problem?

Nahlásit jako SPAM
IP: 147.175.120.–
liborb
~ Redaktor
+18
Guru
4. 4. 2011   #2
-
0
-

Chybí ti tam alokace, něco jako:

player.zbran = new weapon;

Nahlásit jako SPAM
IP: 78.80.52.–
Guy
~ Anonymní uživatel
4 příspěvky
4. 4. 2011   #3
-
0
-

a je to korektne len cisto C?
Nemozem pouzivat ziadne nic z c++;

Nahlásit jako SPAM
IP: 147.175.120.–
liborb
~ Redaktor
+18
Guru
4. 4. 2011   #4
-
0
-

To Guy : Tak použij malloc

Nahlásit jako SPAM
IP: 78.80.52.–
Guy
~ Anonymní uživatel
4 příspěvky
4. 4. 2011   #5
-
0
-

Plz, ako cez ten malloc? postni code.
Taktiez ako to upravit potom ked chcem pouzivat pole?

int main()

{
player_st player[50];

player.zbran = new weapon;
player.zbran->weaponEquiped=1;
printf("%d", player[20].zbran->weaponEquiped);

system("pause");
return 0;
}

Nahlásit jako SPAM
IP: 147.175.120.–
Guy
~ Anonymní uživatel
4 příspěvky
4. 4. 2011   #6
-
0
-

   player.zbran =(weapon)* malloc(31*sizeof(weapon));

Skusal som nieco taketo, bohuzial to nefunguje.
Uvital by som pomoc

Nahlásit jako SPAM
IP: 147.175.120.–
m->29+6
Super člen
4. 4. 2011   #7
-
0
-

Ak chceš používať pole tak tak isto len to vynásobíš počtom prvkov. Takže ak chceš jednu zbraň tak:

player.zbran = malloc(sizeof(weapon));
A ak pole tak:
player.zbran = malloc(MAX_WEAPONS*sizeof(weapon));

Nahlásit jako SPAM
IP: 83.240.51.–
Anonymní uživatel
~ Anonymní uživatel
0 příspěvků
4. 4. 2011   #8
-
0
-

Diky za pomoc...
Este by som potreboval jednu vec, weaponEquiped som spravil ako pointer, ale program mi ho teraz nechce brat.

#include <stdio.h>

#include <stdlib.h>

typedef struct weapon
{
int *weaponEquiped;

};

typedef struct player_st
{
char name[9];
weapon *zbran;
};

int main()
{
player_st player;
player.zbran = (weapon *) malloc(sizeof(weapon));

player.zbran->weaponEquiped=1;
printf("%d", player.zbran->weaponEquiped);

system("pause");
return 0;
}


Nahlásit jako SPAM
IP: 147.175.178.–
KIIV
~ Moderátor
+43
God of flame
4. 4. 2011   #9
-
0
-

me treba funguje toto:

#include <stdio.h>

#include <stdlib.h>

typedef struct tweapon
{
int weaponEquiped;
} weapon;

typedef struct tplayer_st
{
char name[9];
weapon *zbran;
} player_st;



int main()
{
player_st player;
player.zbran = (weapon *) malloc(sizeof(weapon));

player.zbran->weaponEquiped=1;
printf("%d", player.zbran->weaponEquiped);

return 0;
}

Nahlásit jako SPAM
IP: 62.168.56.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Anonymní uživatel
~ Anonymní uživatel
0 příspěvků
4. 4. 2011   #10
-
0
-

J lenze teraz chcem spravit ten weaponEquiped ako pointer.
Ked to nie je pointer funguje to normalne...

Nahlásit jako SPAM
IP: 147.175.178.–
liborb
~ Redaktor
+18
Guru
4. 4. 2011   #11
-
0
-

To je pořád dokola. Když to máš jako pointer, tak před prvním použitím musíš alokovat paměť, na kterou ukazuje nebo odkázat na nějakou existující (ovšem taky alokovanou). Takže zase malloc :).

Nahlásit jako SPAM
IP: 78.80.52.–
KIIV
~ Moderátor
+43
God of flame
4. 4. 2011   #12
-
0
-

To Anonymní uživatel : mozna by nebylo od veci nastudovat si neco o pointerech..
delat s nima aniz bys tusil wtf je minimalne o neocekavane padani programu, zahadne zmeny dat v promennych a tak podobne
(pokud se dostanes tak daleko, abys to dokazal sam rozjet)

Nahlásit jako SPAM
IP: 62.168.56.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Anonymní uživatel
~ Anonymní uživatel
0 příspěvků
4. 4. 2011   #13
-
0
-

Skusil som toto:

#include <stdio.h>

#include <stdlib.h>

typedef struct weapon
{
int *weaponEquiped;
int wee;
};

typedef struct player_st
{
char name[9];
weapon *zbran;
};

int main()
{
player_st player;
player.zbran = (weapon *) malloc(sizeof(weapon));
player.zbran->weaponEquiped = new int;
player.zbran->weaponEquiped=5;
printf("%d", player.zbran->weaponEquiped);

system("pause");
return 0;
}


Bohuzial stale nefunguje.

Nahlásit jako SPAM
IP: 147.175.178.–
KIIV
~ Moderátor
+43
God of flame
4. 4. 2011   #14
-
0
-

To Anonymní uživatel : a ty se divis? new je prece z C++
a ikdyby neco alokovalo tak se toho hned v zapeti zbavis tim, ze ten pointer prepises nejakym cislem -> tj. zbavis se jedineho odkazu kde mas alokovanou pamet (memory leak) a pak tam hodis nahodnou pozici v ram..
(coz neudela takovy problem protoze o radek niz vypisujes hodnotu pointeru, takze se blbosti navzajem temer vyrusi - ale to uz si tam mel nechat jen ten integer a neblbnout s pointerem)

Nahlásit jako SPAM
IP: 62.168.56.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 11 hostů

Podobná vlákna

Problém v C — založil Robin

Problem — založil Ghosta

Problém — založil Ma.ty

Problém — založil pali6

Problem — založil roonill

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý