Pregunta

Encontré este código de ejemplo e intenté buscar en Google qué (int (*)[])var1 Podría soportar, pero no obtuve resultados útiles.

#include <unistd.h>
#include <stdlib.h>

int i(int n,int m,int var1[n][m]) {
    return var1[0][0];
}

int example() {
    int *var1 = malloc(100);
    return i(10,10,(int (*)[])var1);
} 

Normalmente trabajo con VLA en C99, así que estoy acostumbrado a:

#include <unistd.h>
#include <stdlib.h>

int i(int n,int m,int var1[n][m]) {
    return var1[0][0];
}

int example() {
    int var1[10][10];
    return i(10,10,var1);
} 

¡Gracias!

¿Fue útil?

Otros consejos

Es un typecast de un puntero que apunta a una matriz de int.

(int (*)[]) es un puntero a una variedad de ints. Equivalente al int[n][m] argumento de función.

Este es un idioma común en C: primero hacer un malloc para reservar la memoria, luego lanzarlo al tipo deseado.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top