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

Vynulování struktury – C / C++ – Fórum – Programujte.comVynulování struktury – C / C++ – Fórum – Programujte.com

 

Figa0
Super člen
22. 2. 2010   #1
-
0
-

Ahoj mam nejakou strukturu tu naplnim hodnotamy jak ji po pouziti vynuluji jinym zpusobem nez postupnym nastavovanim defaultnich hodnot prvkum? Predem dekuji za odpoved.

Nahlásit jako SPAM
IP: 87.249.133.–
liborb
~ Redaktor
+18
Guru
22. 2. 2010   #2
-
0
-

Můžeš použít třeba memset (ZeroMemory):



MOJE_STRUKTURA sData;

memset((LPBYTE)&sData, 0, sizeof(MOJE_STRUKTURA));

Nahlásit jako SPAM
IP: 85.207.166.–
Figa0
Super člen
22. 2. 2010   #3
-
0
-

Dekuji ale mam dva problemy co musim includovat abych mohl pouzit LPBYTE a jeste dostanu error za invalidni uziti struktury v sizeof.

Nahlásit jako SPAM
IP: 87.249.133.–
KIIV
~ Moderátor
+43
God of flame
22. 2. 2010   #4
-
0
-

ono by bohate stacilo pretypovat na void *.. (void *)(&sData) a sizeof musi jet .. maximalne struct MOJE_STRUKTURA .. nebo pripadne sizeof(sData), ikdyz to uz je spis oklikou

a nezapomen ze memset je ze string.h

Nahlásit jako SPAM
IP: 80.250.1.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Figa0
Super člen
22. 2. 2010   #5
-
0
-

Uz sme si nasel pretypovani na void* takze mam neco takoveho step undo; memset((void*)&undo, 0, sizeof(undo)); To sice funguje ale kdyz se pak snazim pristoupit na prvek struktury tak program spadne.

Nahlásit jako SPAM
IP: 87.249.133.–
KIIV
~ Moderátor
+43
God of flame
22. 2. 2010   #6
-
0
-

dej kod

Nahlásit jako SPAM
IP: 80.250.1.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Figa0
Super člen
22. 2. 2010   #7
-
0
-

Definice struktury:



struct step {
int x;
int y;
char value[2];
QString color;
QFont font;
string candidates;
int unfilled;
};

Ulozeni dat do struktury:


void saveUndo(int x, int y, char value, QString color, QFont font, string candidates, int unfilled) {
undo.x = x;
undo.y = y;
undo.value[0] = value;
undo.value[1] = '\0';
undo.color = color;
undo.font = font;
undo.candidates = candidates;
undo.unfilled = unfilled;
}

Pote probehne precteni dat a jejich smazani.


memset((void*)&undo, 0, sizeof(undo));

Po opetovnem spusteni fce saveUndo program spadne.

Nahlásit jako SPAM
IP: 87.249.133.–
liborb
~ Redaktor
+18
Guru
22. 2. 2010   #8
-
0
-

Máš tam objekty, takže nemůžeš použít memset, tj. budeš to muset dělat "ručně".

Nahlásit jako SPAM
IP: 85.207.166.–
Figa0
Super člen
22. 2. 2010   #9
-
0
-

A proc memcpy s objekty funguje a memset ne? Jinak moc dekuji.

Nahlásit jako SPAM
IP: 87.249.133.–
liborb
~ Redaktor
+18
Guru
22. 2. 2010   #10
-
0
-

Vždycky záleží na způsobu použití. Když sem dáš příklad toho co ti funguje, tak můžu být i konkrétnější.

Nahlásit jako SPAM
IP: 85.207.166.–
KIIV
~ Moderátor
+43
God of flame
22. 2. 2010   #11
-
0
-

je otazka, zda to neni lepsi rovnou udelat jako objekt :)) inicializaci si das do konstruktoru..

Nahlásit jako SPAM
IP: 80.250.1.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Anonymní uživatel
~ Anonymní uživatel
0 příspěvků
22. 2. 2010   #12
-
0
-

neo vytvaret strukturu pomoci ukazatele pak ji jednoduse smazat a priradit ukazateli jonu pamet

Nahlásit jako SPAM
IP: 85.13.98.–
Figa0
Super člen
22. 2. 2010   #13
-
0
-

Dekuji moc nakonec sem to zkoulel pres new.

Nahlásit jako SPAM
IP: 87.249.133.–
liborb
~ Redaktor
+18
Guru
23. 2. 2010   #14
-
0
-

Vyřešit nulování struktury další alokací paměti? :smile19:

Když máš undo (redo?), tak bych učekával třeba kruhový buffer, ale neustálou alokaci paměti ... Máš k tomu jiný důvod než ten, že je program o 2 řádky kratší? :smile1:

Nahlásit jako SPAM
IP: 85.207.166.–
Figa0
Super člen
28. 2. 2010   #15
-
0
-

Co je to kruhový buffer?

Nahlásit jako SPAM
IP: 87.249.133.–
KIIV
~ Moderátor
+43
God of flame
28. 2. 2010   #16
-
0
-

to uz snad jako pouzijes google ne?

Nahlásit jako SPAM
IP: 77.237.136.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Figa0
Super člen
28. 2. 2010   #17
-
0
-

Omlouvam se spatna formulace dotazu: Jakou to ma vyhodu oproti new? Samozrejme ze tento termin sem si vyhledal. Jeste jednou se omlouvam. Sry za SPAM

Nahlásit jako SPAM
IP: 87.249.133.–
KIIV
~ Moderátor
+43
God of flame
28. 2. 2010   #18
-
0
-

vyhoda je v tom, ze nemusis mit dynamickou strukturu, a taky mas primej pristup k jednotlivejm prvkum..
nevyhoda ze mas omezenej pocet kroku..

Nahlásit jako SPAM
IP: 77.237.136.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Figa0
Super člen
28. 2. 2010   #19
-
0
-

JJ uz to vidim. Pro me je lepsi new prtz ukladam jenom posledni krok vice neni potreba. Dekuji mnohokrat.

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

Podobná vlákna

Struktury — založil Samuel Lehotský

Struktury — založil Matěj Andrle

Struktury — založil RePRO

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ý