Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: blackshack_zero en 29 Agosto 2015, 01:50 am



Título: ¿Matrices de punteros a funciones en C?
Publicado por: blackshack_zero en 29 Agosto 2015, 01:50 am
Hola compañeros.
Quiero saber si es posible crear matrices bidimensionales de punteros a funciones en C.
Muchas gracias.  ;D


Título: Re: ¿Matrices de punteros a funciones en C?
Publicado por: snake_linux en 29 Agosto 2015, 11:22 am
Hola compañeros.
Quiero saber si es posible crear matrices bidimensionales de punteros a funciones en C.
Muchas gracias.  ;D

Querrás decir si a una función le puedes pasar una matriz creada con punteros, es decir, dinámica, si es así te pongo un ejemplo:

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. void funcion(int **);
  5.  
  6. int main() {
  7.  
  8. int **mi_matriz;
  9. mi_matriz=(int **)malloc(sizeof(int *)*10);
  10.  
  11. int x;
  12. for(x=0;x<10;x++)  mi_matriz[x]=(int *)malloc(sizeof(int)*10);
  13.  
  14. mi_matriz[3][4]=5;
  15.  
  16. funcion(mi_matriz);
  17.  
  18. return 0;
  19. }
  20.  
  21. void funcion(int ** matriz) {
  22.  
  23.    printf("El numero es %d\n", matriz[3][4]);
  24.  
  25.  
  26. }
  27.  

Espero haberte sido de ayuda.

Saludos.


Título: Re: ¿Matrices de punteros a funciones en C?
Publicado por: xiruko en 29 Agosto 2015, 14:34 pm
Hola compañeros.
Quiero saber si es posible crear matrices bidimensionales de punteros a funciones en C.
Muchas gracias.  ;D

Hola, pues la idea es la misma que cuando haces un arreglo de punteros a funciones, solo que le añades una dimensión más. Mira este ejemplo tonto:

Código
  1. #include <stdio.h>
  2.  
  3. void f1(void);
  4. void f2(void);
  5. void f3(void);
  6. void f4(void);
  7.  
  8. int main()
  9. {
  10. void (*funcPtr[2][2])(void);
  11. funcPtr[0][0] = &f1;
  12. funcPtr[0][1] = &f2;
  13. funcPtr[1][0] = &f3;
  14. funcPtr[1][1] = &f4;
  15.  
  16. (*funcPtr[0][0])();
  17. (*funcPtr[0][1])();
  18. (*funcPtr[1][0])();
  19. (*funcPtr[1][1])();
  20.  
  21. return 0;
  22. }
  23.  
  24. void f1(void) { printf("Llamada a f1\n"); }
  25. void f2(void) { printf("Llamada a f2\n"); }
  26. void f3(void) { printf("Llamada a f3\n"); }
  27. void f4(void) { printf("Llamada a f4\n"); }

Donde la salida será:

Código:
Llamada a f1
Llamada a f2
Llamada a f3
Llamada a f4

Saludos!


Título: Re: ¿Matrices de punteros a funciones en C?
Publicado por: ivancea96 en 29 Agosto 2015, 23:34 pm
Ten en cuenta que una matriz o un array guardan cualquier tipo de elemento o variable, y más aun si es un puntero, puesto que no es más que una dirección, que a nivel práctico es un valor entero.