Что означает (int (*) []) var1?
-
24-10-2019 - |
Вопрос
Я нашел этот пример кода и попытался Google, что (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
с Эквивалентно int[n][m]
Функциональный аргумент.
Это обычная идиома в C: сначала сделайте Malloc, чтобы зарезервировать память, а затем подготовить ее к желаемому типу.
Не связан с StackOverflow