【问题标题】:function return pointer to array type in C函数返回指向C中数组类型的指针
【发布时间】:2014-08-04 14:34:07
【问题描述】:

以下 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* 以使其在语义上与上述相同并正确编译?

【问题讨论】:

    标签: c arrays function pointers gcc


    【解决方案1】:
    int (*asd2(void))[3]{
        return &a;
    }
    

    cdecl

    【讨论】:

    【解决方案2】:

    试试这个:

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

    【讨论】:

      【解决方案3】:

      也许看看this
      正如here 所说,您不应该使用这种 typedef 语句。

      【讨论】:

      • 我只能说我别无选择,只能感谢您提供的链接。
      猜你喜欢
      • 1970-01-01
      • 2015-08-07
      • 1970-01-01
      • 2011-01-12
      • 1970-01-01
      • 2022-11-21
      • 2021-05-30
      • 2020-04-29
      • 1970-01-01
      相关资源
      最近更新 更多