Я нашел этот пример кода, и я пытался погуглить что (int (*)[])var1
мог обозначать, но я не получил полезных результатов.
#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);
}
Обычно я работаю с VLAs в C99, таким образом, я привык к:
#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);
}
Спасибо!
Это означает « преобразовать var1 в указатель в массив int ".
Это типизация указателя, который указывает на массив int.
(int (*) [])
- указатель на массив int
s. Эквивалентно аргументу функции int [n] [m]
.
Это обычная идиома в C: сначала выполните malloc, чтобы зарезервировать память, затем приведите ее к желаемому типу.