8

我找到了这个示例代码,并尝试用谷歌搜索(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);
} 

通常我在 C99 中使用 VLA,所以我习惯于:

#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);
} 

谢谢!

4

3 回答 3

11

这意味着“将 var1 转换为指向 int 数组的指针”。

于 2010-06-04T09:50:58.747 回答
1

它是指向 int 数组的指针的类型转换。

于 2010-06-04T09:52:00.550 回答
0

(int (*)[])是指向 s 数组的指针int。等效于int[n][m] 函数参数。

这是 C 中的一个常见习惯用法:首先执行 malloc 来保留内存,然后将其强制转换为所需的类型。

于 2010-06-04T09:51:23.300 回答