问题
I found this example code and I tried to google what (int (*)[])var1
could stand for, but I got no usefull results.
#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);
}
Normally I work with VLAs in C99 so I am used to:
#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);
}
Thanks!
回答1:
It means "cast var1 into pointer to array of int".
回答2:
It's a typecast to a pointer that points to an array of int.
回答3:
(int (*)[])
is a pointer to an array of int
s. Equivalent to the int[n][m]
function argument.
This is a common idiom in C: first do a malloc to reserve memory, then cast it to the desired type.
来源:https://stackoverflow.com/questions/2972978/what-does-int-var1-stand-for