![]() |
Mòdul
5
![]() |
Fonaments de
Programació. Llenguatge C/C++![]() |
Pràctica
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() |
![]() |
|
Pràctica
d'ampliació ![]() ![]() |
Ús de vectors de punters a funcions
En aquesta pràctica veurem un exemple de punters a funcions.
|
||||||
![]() |
Desenvolupament de la pràctica
Definiu un projecte nou anomenat m5pa1 i afegiu-li un arxiu de font C/C++ anomenat m5pa1.cpp. Escriviu el següent codi:
Explicació del programa La característica principal d'aquest programa és que pot cridar a quatre funcions diferents amb una sola sentència de crida. La línia de codi clau és la següent:
Aquesta línia és un bucle que s'executa 4 cops. Cada cop que s'executa el valor de la variable i varia de 0 fins a 3. El cos del bucle és una crida a la funció afuncio[i](). De fet, afuncio[i]() no és realment una funció sinó un punter a una funció. Aquest punter s'ha de declarar al començament com qualsevol altra variable. La declaració es fa de la següent forma:
D'aquesta forma es declara un vector de punters a una funció que no retorna cap valor i té dos arguments enters. Les següents línies
assignen a cada un d'aquests quatre punters un valor inicial:
El nom d'una funció sense el parèntesi s'interpreta com un punter a aquesta funció. Les funcions suma(), resta(), multiplica() i divideix() han estat prèviament declarades com funcions que no retornen cap valor i tenen dos arguments enters. Quan es fa servir un punter a funció seguit dels parèntesis i la llista d'arguments, s'interpreta com una crida a la funció apuntada pel punter. La sortida del programa és la següent:
|