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

C Funkce jako parametr funkce – C / C++ – Fórum – Programujte.comC Funkce jako parametr funkce – C / C++ – Fórum – Programujte.com

 

František Brámek
~ Anonymní uživatel
5 příspěvků
21. 4. 2013   #1
-
0
-

Ahoj chci se zeptat na funkci, která je zadaná jako parametr funkce. Potřebuji udělat funkci funkce(cislo, function), která udělá for cyklus tolikrát kolik je cislo a v každém cyklu se provede function. Přičemž to může být jakákoliv funkce.

Nahlásit jako SPAM
IP: 2001:67c:1220:c1a1:3907:e...–
marpit0
Stálý člen
21. 4. 2013   #2
-
0
-

#1 František Brámek
Pokud to dobře chápu, tak chceš funkci, jejímž parametrem je ukazatel na jinou funkci?

Nahlásit jako SPAM
IP: 78.102.62.–
MarPit
František Brámek
~ Anonymní uživatel
5 příspěvků
21. 4. 2013   #3
-
0
-

#2 marpit
Nejspíš ano. Nejsem si jistý jak to řešit. Jde mi o to aby se ta funkce vyvolala v té druhé funkci.

Nahlásit jako SPAM
IP: 2001:67c:1220:c1a1:3907:e...–
vitamin+8
Grafoman
Nahlásit jako SPAM
IP: 95.105.157.–
obfuscate: "The cruel god Malloc will strike you down. "
ZMeson: "That's the C god. C++ has a new god. "
marpit0
Stálý člen
21. 4. 2013   #5
-
0
-

#3 František Brámek
 

#include <iostream>

using namespace std;

void function()
{
	cout << "Ahoj" << endl;
}

void function2(const int n, void (*f)())
{
	for (int i = 0; i < n; ++i)
	{
		f();
	}
}

int main()
{
	function2(5, function);
	
	system("pause");
	return  0;
}
Nahlásit jako SPAM
IP: 78.102.62.–
MarPit
František Brámek
~ Anonymní uživatel
5 příspěvků
21. 4. 2013   #6
-
0
-

#4 vitamin

Když to udělám podle toho, tak mi vypisuje invalid use of void expression. Nevíte co to je

Nahlásit jako SPAM
IP: 2001:67c:1220:c1a1:3907:e...–
Matrix17
~ Anonymní uživatel
300 příspěvků
21. 4. 2013   #7
-
0
-

#6 František Brámek
Tak ukaž přímo kód... Ukázka, kterou sem dal marpit, by ti fungovat měla.

Nahlásit jako SPAM
IP: 213.226.237.–
ingiraxo+15
Grafoman
21. 4. 2013   #8
-
0
-

 Takto?

#include <stdio.h>

// pro snadnejsi pouziti si vytvoris typ ukazatele na Funkci
typedef void (*FunkcePtr)();

// funkce
void funkce(int cislo, FunkcePtr function)
{
    int i;
    for (i = 0; i < cislo; ++i)
        function();
}

// funkce, ktera se zavola v kazdem cyklu
void volanaFunkce()
{
    printf("bagr ");
}

int main()
{
    funkce(5, volanaFunkce);
    return 0;
}
Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
František Brámek
~ Anonymní uživatel
5 příspěvků
21. 4. 2013   #9
-
0
-

#8 ingiraxo
Takhle už to funguje. Dalo by se k tomu ještě přidat, aby volanafunkce měla parametry?

Nahlásit jako SPAM
IP: 2001:67c:1220:c1a1:3907:e...–
ingiraxo+15
Grafoman
21. 4. 2013   #10
-
0
-

#9 František Brámek
jistě, jen upravíš  typedef na 

typedef void (*FunkcePtr)(int);

a potom v tom cyklu bude fci předávat parametr (třeba index) 

void funkce(int cislo, FunkcePtr function)
{
    int i;
    for (i = 0; i < cislo; ++i)
        function(i);
}

samozřejmě musíš upravit i tu fci, která se bude vykonávat 

void volanaFunkce(int i)
{
    printf("%d ", i);
}


Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
František Brámek
~ Anonymní uživatel
5 příspěvků
21. 4. 2013   #11
-
0
-

#10 ingiraxo
Děkuji.

Nahlásit jako SPAM
IP: 2001:67c:1220:c1a1:3907:e...–
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, 13 hostů

Podobná vlákna

C# pole jako parametr funkce — založil Geralt

Objekt jako parametr funkce — založil xJakubS

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ý