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

Ukazatele ve funkcích – C / C++ – Fórum – Programujte.comUkazatele ve funkcích – C / C++ – Fórum – Programujte.com

 

Marek Svoboda
~ Anonymní uživatel
1 příspěvek
13. 5. 2015   #1
-
0
-

Ahoj,
jak je správná syntaxe funkce, která by z ukazatele v parametru udělala pole na volném úložišti?
Jak pak zapsat hodnoty do tohoto pole? - něco jako:

int main(){
	int * vek;		//tvorba ukazatele
	tvorbaPole(&vek);	
	...
	int x = vek[1];		//nedochazi k uniku pameti
}

void tvorbaPole(int ** pVek){	//??spravna syntaxe??
	*pVek = new int[2];	//tvorba pole na novem ulozisti z ukazatele vek		
	*pVek[1] = 4;		//prace s polem
}

Děkuji

Nahlásit jako SPAM
IP: 109.80.24.–
PiranhaGreg0
Stálý člen
14. 5. 2015   #2
-
0
-

Myšlenka je dobrá, ale chce to doladit. Vezmu to od nekritičtějších věcí...

  1. Kód 
    *pVek[1] = 4;

    nedělá to co by sis představoval. Operátor dereference má vyšší prioritu než hranatý závorky  .

  2. Na konci by to chtělo 

    delete[] vek;
  3. Nikde nevracíš zpět délku alokovaného pole. Pokud bude vždycky stejná, bylo by možná vhodnější využít statické pole...
  4. Ještě taková poznámka. Pokud je reálná šance, že ten zdroják bude číst a využívat i někdo další, měl bys tam důrazně napsat jak ta funkce pracuje s předaným ukazatelem. Hlavně tedy, že starý ukazatel přepíše a nový je potřeba uvolnit. V C++ se od tohoto zápisu upouští, protože pokud si k tomu někdo nepřečte dokumentaci, je docela velká šance, že tam udělá nesprávným použitím memory leak...

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

Podobná vlákna

Proměnné ve funkcích — založil maral

Ukazatele — založil Šimon

C# ukazatelé — založil Kubas129

C++ Ukazatele — založil pointer

Ukazatele — založil demo

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ý