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

Ukazatele – C / C++ – Fórum – Programujte.comUkazatele – C / C++ – Fórum – Programujte.com

 

IBTR0
Duch
22. 5. 2010   #1
-
0
-

Mám pole ukazatelů ( zaznamy[...])na strukturu (pokuta) a potřeuju do něj zapsat ukazatel na nově vytvořený záznam. Problém je že v gcc to jde bez problému zkompilovat tak ve MS Visual studio hlásí errory. Zkoušel jsem následující způsoby ale ani jedno neprojde. Nevíte v čem je problém ?

zaznamy[pocet]=malloc(sizeof(pokuta));


zaznamy[pocet]=malloc(sizeof(struct pokuta));

zaznamy[pocet]=(pokuta*)malloc(sizeof(struct pokuta));


To Visualstudio píše něco jako :
Error 1 error C2440: '=' : cannot convert from 'void *' to 'pokuta *' c:\users\a\documents\visual studio 2008\projects\p1\p1\lib.cpp 35 p1




Nahlásit jako SPAM
IP: 78.136.141.–
Matrix17
~ Anonymní uživatel
300 příspěvků
22. 5. 2010   #2
-
0
-

Jestli je "pokuta" strukturní proměná mělo by fungovat tohle:



zaznamy[pocet]=(pokuta *)malloc(sizeof(pokuta));


Jestli není tak tohle:


zaznamy[pocet]=(struct pokuta *)malloc(sizeof(struct pokuta));

Nahlásit jako SPAM
IP: 78.156.128.–
IBTR0
Duch
22. 5. 2010   #3
-
0
-

To Matrix17 : To Matrix17 : To Matrix17 :



Ano je to strukturní proměnná.

 zaznamy[pocet]=(pokuta *) malloc(sizeof(pokuta));


ale tohle hlásí pro mě nepochopitelnou chybu:
Error 1 error C2059: syntax error : ')' c:\users\a\documents\visual studio 2008\projects\p1\p1\lib.cpp 35 p1


Nahlásit jako SPAM
IP: 78.136.141.–
Petr
~ Anonymní uživatel
746 příspěvků
22. 5. 2010   #4
-
0
-

To IBTR : Nepomohlo by místo malloc použít new?

Nahlásit jako SPAM
IP: 78.80.225.–
Matrix17
~ Anonymní uživatel
300 příspěvků
23. 5. 2010   #5
-
0
-

To IBTR : To vypadá, že ti někde chybí nebo přebejvá závorka ")". Zkus okolo toho řádku kde ti to chybu hlásí mrknout jestli sou všude všechny závorky, kde mají bejt.

Nahlásit jako SPAM
IP: 78.156.128.–
zdenda
~ Anonymní uživatel
257 příspěvků
23. 5. 2010   #6
-
0
-

Ukaž deklarace/definice té struktury a pole.

Nahlásit jako SPAM
IP: 213.211.51.–
ondra.holub
~ Anonymní uživatel
255 příspěvků
24. 5. 2010   #7
-
0
-

Je potřeba si ujasnit, v jakém jazyce ten program je. Pokud se jedná o C, je třeba použít gcc. Pokud je to C++, používá se g++ (jde to sice i s gcc, ale není to tak triviální).

V případě překladu VisualC bych si dal pozor na to, jestli tam někde není nastavené, že všechno se překládá jako C++.

Pak už jenom zbývá uvědomit si, že
- struct zaznam a zaznam jsou v C různé typy (pokud to není typedefované na sebe)
- C++ je typově citlivější, takže výsledek malloc je třeba přetypovat na ukazatel na správný typ. Takže

int* x = malloc(sizeof(int) * 10);
Je správně v C, ale špatně v C++.

Pokud používáte C++, přikláním se k radě někoho výše - použít new a pro uvolnění delete.

Nahlásit jako SPAM
IP: 194.138.12.–
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, 79 hostů

Podobná vlákna

Ukazatele — založil Šimon

C++ Ukazatele — založil pointer

Ukazatele — založil Albornoz

Ukazatele — založil demo

C# ukazatelé — založil Kubas129

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ý