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

Dynamicke pole - vypis – C / C++ – Fórum – Programujte.comDynamicke pole - vypis – C / C++ – Fórum – Programujte.com

 

Dutch77
~ Anonymní uživatel
5 příspěvků
13. 11. 2012   #1
-
0
-

vypis(pocetPrvkuVPoli, &dynamicke_pole);

void(int pocet, int** pole)
{
for(int i = 0; i < pocet;i++)
cout << *pole[i] << endl;
}

pole[0]0x3e0fb8
pole[1]0x3e0fbc
<- před zvětšením pole

pole[0]0x3e1030
pole[1]0x3e1034
<- vytvoření a zápis do nového pole

pole[0]0x3e1030
pole[1]0x413540
<- pole[1] ve funkci vypis(pocetPrvkuVPoli, &dynamicke_pole);
ukazuje nesmyslně (nebo spíš smyslně, jenom nevím proč :D) někam do háje.

Mimo funkci vypis, pole funguje dobre a prvky vypisuje... Neni mi jen jasne, proc si skace nekam po pameti jak chce :)  

Nahlásit jako SPAM
IP: 92.62.224.–
Luckin
~ Anonymní uživatel
57 příspěvků
13. 11. 2012   #2
-
0
-

#1 Dutch77
Proč funkci vypis předáváš adresu pointeru a proč ta funkce přebírá jako parametr pointer na pointer, jako kdyby si jí měl předávat dvourozměrný pole, ale pokud chápu správně předáváš pointer na pole jednorozměrný? Vypisuješ pole přes adresu adresy, čímž si to děláš zbytečně složitý a máš v tom chybu, musíš použít *(pole)[i].

Nahlásit jako SPAM
IP: 89.103.156.–
Luckin
~ Anonymní uživatel
57 příspěvků
13. 11. 2012   #3
-
0
-

#2 Luckin
oprava: (*pole)[i]

Nahlásit jako SPAM
IP: 89.103.156.–
Dutch77
~ Anonymní uživatel
5 příspěvků
13. 11. 2012   #4
-
0
-

Díky, (*pole)[i] je přesně ta chyba :)

Já více méně testuju, co c++ umí. Teprve s tím začínám.

Mám funkci main, tam si nadefinuju dynamicke pole a pak volam dalsi funkci, ktera v pripade, ze je pole maly, tak ho udela vetsim a vlozi do nove vytvoreny pameti hodnotu. Mno a pokud chci, aby tam ta hodnota zustala a nesmazala se mi pri skonceni fce, tak musim zapisovat jakoby o uroven vys. Proto ty dva pointery. Jeden ukazuje do dynamickeho pole v mainu a druhy ukazuje na dynamicke pole. Proto tam mam dva ukazatele.

Nahlásit jako SPAM
IP: 92.62.224.–
Luckin
~ Anonymní uživatel
57 příspěvků
13. 11. 2012   #5
-
0
-

#4 Dutch77
Nějak nechápu, pole se vždycky předává jako pointer takže ti stačí jedna úroveň, alespoň u vypsání. U nastavení velikosti potřebuješ pointer na ten pointer kterýmu přiřazuješ paměť a nebo podle mě jednodušeji a přehledněji použít referenci int* & pole. Pak nemusíš předávat adresu a pracovat s dvojitym pointerem, protože pole je odkaz na to co funkci předáš.

Nahlásit jako SPAM
IP: 89.103.156.–
Dutch77
~ Anonymní uživatel
5 příspěvků
13. 11. 2012   #6
-
0
-

:D no jo vlastně... Díky za pomoc, už jsem z těch ukazatelů zmagořenej :)

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

Podobná vlákna

Dynamicke pole — založil george6565

Ne/dynamicke pole — založil cecilconrad

Dynamicke pole — založil Earl Cash

Soubor v C dynamicke pole — založil risakczex

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ý