Вопрос

Я нашел этот пример кода и попытался 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);
} 

Спасибо!

Это было полезно?

Решение

Другие советы

Это типичный указатель, который указывает на массив Int.

(int (*)[]) является указателем на множество intс Эквивалентно int[n][m] Функциональный аргумент.

Это обычная идиома в C: сначала сделайте Malloc, чтобы зарезервировать память, а затем подготовить ее к желаемому типу.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top