Domanda

Ho trovato questo codice di esempio e ho cercato di google Cosa (int (*)[])var1 potrebbe stare per, ma ho ottenuto risultati utili.

#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 io lavoro con i VLA a C99 così mi sono abituato 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);
} 

Grazie!

È stato utile?

Altri suggerimenti

E 'un typecast a un puntatore che punta a un array di int.

(int (*)[]) è un puntatore a una matrice di ints. Equivalente a l'argomento della funzione int[n][m].

Questo è un idioma comune in C:. Prima fare un malloc alla memoria di riserva, poi gettato al tipo desiderato

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top