Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Deklaracija: int (*func)(char *)

[es] :: C/C++ programiranje :: Deklaracija: int (*func)(char *)

[ Pregleda: 3881 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

kajla
Milorad Janković
Beograd

Član broj: 445
Poruke: 909
*.68.EUnet.yu



+2 Profil

icon Deklaracija: int (*func)(char *)18.06.2001. u 19:48 - pre 261 meseci
sta znaci deklaracija

int (*func)(char *)

sta tacno radi ovaj program

int put_s(char *msg)
{
puts(msg);
return 3;
}

int funca(int (*func)(char *)) /*ova funkcija poziva funkciju koja joj je */
/*data kao argument, u ovom slucaju poziva */
{ /*funkciju "int put_s(char *)",pa je valjda*/
return func("Milorad"); /*zato argument ove funkcije (int funca) */
} /*definisan kao: int (*func)(char *) */

void main(void)
{
clrscr();
printf( "%d",funca(put_s) );
getch();
}
 
Odgovor na temu

MoHicAn

Član broj: 43
Poruke: 1893
*.yubc.net



Profil

icon Re: Deklaracija: int (*func)(char *)18.06.2001. u 22:36 - pre 261 meseci
Malo su nejasni ovi komentari al ajd sad ...
pretpostavljam da ih ti nisi pisao pa cu probati malo preko njih da razumem ovo posto mi onaj deo int funca(int (*func)(char *)) nije bas jasan tako da cu primeniti njegovo objasnjenje ...

da krenemo od main()
dobro slrscr() cisti ekran ......
e sad printf izbacuje ...
funkciji funca se predaje po redosledu put_s koja onda postaje unutar te funkcije func a ovo char ebem li ga .... mozda deklarise da ovaj unutrasnji func prima char ......
e sad func-u tj put_s -u se predaje milorad i tu puts vraca "milorad" i tu mi nije jasno ovo return 3 .....

i onda ide getch() koji verojatno fata charove sa tastature !!!! posto sam ja cuo za getchar() ..... to je valjda to !!!!

Nisam bash najbolje skontao sta produktivno radi ovaj program ......
mozda preda pomogne ......

PS:
jesi probao da ga iskompajliras i vidis sta radi ?


 
Odgovor na temu

MoHicAn

Član broj: 43
Poruke: 1893
*.yubc.net



Profil

icon Re: Deklaracija: int (*func)(char *)18.06.2001. u 22:50 - pre 261 meseci
HM evo ja sad na FreeBSD 4.3-u probao da ga iskompailiram i nece
probao sam da stavim
#include <stdio.h> za ovaj getch() posto getshar koristi stdio al nije htelo ...... ne znam koja je biblioteka za njega !!!!!
a sto se tice clrsr() -a on koristi conio.h al nju nije nasao gcc na ovom bsd-u al to i nije tolko bitno ....
 
Odgovor na temu

Vojislav Milunovic

Član broj: 25
Poruke: 2117
*.verat.net



+1 Profil

icon Re: Deklaracija: int (*func)(char *)18.06.2001. u 23:53 - pre 261 meseci
Citat:
kajla je napisao:
sta znaci deklaracija

int (*func)(char *)

sta tacno radi ovaj program

int put_s(char *msg)
{
puts(msg);
return 3;
}

int funca(int (*func)(char *)) /*ova funkcija poziva funkciju koja joj je */
/*data kao argument, u ovom slucaju poziva */
{ /*funkciju "int put_s(char *)",pa je valjda*/
return func("Milorad"); /*zato argument ove funkcije (int funca) */
} /*definisan kao: int (*func)(char *) */

void main(void)
{
clrscr();
printf( "%d",funca(put_s) );
getch();
}



Nije tesko ovo objasniti naime krajnje je prosto ako znas sta se radi ;o)
Evo sacu da ti objasnim najkrace i po mogucstvu najlakse sta je pointer na funkciju::
Naime sam pointer na funkciju je adresa te funkcije koja je 32bitan ili nesto tipa 0x0804800 (lupanm adresu)
Kad pozoves nesto ovako :
Code:

int main(){
 int (*main1)()=main;
 main1();
}


Naime ovaj kod ce da vrti main do besvesti ;o) E sad ako se nesto specifira kao argument
Code:

#include<stdio.h>
 int main(){
   int (*puts1)(const char *)=puts;
  puts1("predator");
}


Znaci sad otprilike znamo kako se definisu funkcijski pointer? Ok e sad da ti objasnim ovaj tvoj prost kod :

Definisana je funkcija funca() koja kao argument prima neku funkciju (zapravo njenu adresu)
Ako bi toj funkciji predao main() dobio bi u programu dole poziv otprilike :
funca(){
main("Milorad");
}

E sad ti predajes toj funkciju funkciju put_s() koja stampa predati string :
Naime ceo ovaj program bi bukvalno mogao da se napise kao:

int main(){
printf("%d\n",put_s("Milorad"));
}

i to bi bila cela mudrost ovog programa ;o)
 
Odgovor na temu

MoHicAn

Član broj: 43
Poruke: 1893
*.yubc.net



Profil

icon Re: Deklaracija: int (*func)(char *)19.06.2001. u 01:26 - pre 261 meseci
HM
ja nisam ucio da se tako deklarise pointer na funkciju !!!!!!!
 
Odgovor na temu

Vojislav Milunovic

Član broj: 25
Poruke: 2117
*.verat.net



+1 Profil

icon Re: Deklaracija: int (*func)(char *)19.06.2001. u 10:35 - pre 261 meseci
Pa aci da vidimo kako si ucio ? pa da ispravimo gresku

Ovo je apsolutno ispravno , ja uvek proverim svoj primer u C da bude potpuno ispravan ,pa onda copy & past ovde.
 
Odgovor na temu

MoHicAn

Član broj: 43
Poruke: 1893
*.yubc.net



Profil

icon Re: Deklaracija: int (*func)(char *)19.06.2001. u 11:07 - pre 261 meseci
E da me ebes sad ako mogu da se setim
a ne mgu da nadjem po knjigama ........
 
Odgovor na temu

c00l_daem0n
Beograd

Član broj: 309
Poruke: 294
*.telekom.yu

Jabber: andrew@elitesecurity.org
ICQ: 53650656


Profil

icon Re: Deklaracija: int (*func)(char *)19.06.2001. u 12:34 - pre 261 meseci
ma pointer na funkciju sigurno

int funkcija(int); //neka funkcija
int (*pointer_funkcija)(int); //deklaracija pointera na funkciju koja prima int

pointer_funkcija = funkcija; //dajes na sta ce pointer_funkcija da pokazuje




Would you translate me on the other page in face = Da li biste me preveli na drugu stranu ulice
 
Odgovor na temu

Vojislav Milunovic

Član broj: 25
Poruke: 2117
*.verat.net



+1 Profil

icon Re: Deklaracija: int (*func)(char *)19.06.2001. u 16:46 - pre 261 meseci
Citat:
c00l_daem0n je napisao:
ma pointer na funkciju sigurno


?? Ne sjecam se da je neko rapsravljao da li je to pointer na char ** ili na int ** ili na funkciju...
bas cudan deo odgovora ;o(
 
Odgovor na temu

[es] :: C/C++ programiranje :: Deklaracija: int (*func)(char *)

[ Pregleda: 3881 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.