函数返回指向C中数组类型的指针

时间:2014-08-04 14:34:08

标签: c arrays function pointers gcc

下面的一段C代码在gcc 4.7下编译,在Debian上运行(用gcc -c filename.c运行)

typedef int array_type[3];
int a[] = {1,2,3};
int* asd1(void){
    return a;
}
array_type* asd2(void){
    return &a;
}

而不是使用typedef我想使用实际类型。但是,如果我将array_type*替换为int*[3]之类的内容,则无法编译。

我应该用array_type*替换它,使其在语义上与上面相同并正确编译?

3 个答案:

答案 0 :(得分:3)

int (*asd2(void))[3]{
    return &a;
}

请参阅cdecl

答案 1 :(得分:1)

试试这个:

int (*asd2(void))[3]{
     return &a;
}

答案 2 :(得分:1)

也许看看this 如上所述,here你不应该使用这种typedef语句。