(int(*)[])var1代表什么?

时间:2010-06-04 09:45:50

标签: c multidimensional-array c99 variable-length

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

谢谢!

3 个答案:

答案 0 :(得分:11)

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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

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