从静态const结构返回一个const char **

时间:2011-04-14 21:46:15

标签: c arrays pointers literals

a.cpp:

static const struct A {
    int a1;
    const char ** a2;
} as[] = {
    {1,(const char *[]){"LOL",NULL}},
    {2,(const char *[]){"LOL","LOL2",NULL}}
};

const char ** getA(int a) {
    int i = 0;
    for(;i< sizeof(as)/sizeof(struct A);i++){
       if (as[i].a1 == a)
           return as[i].a2;
    }
}

从静态初始化静态const结构返回const char **时是否存在上下文或范围问题?

3 个答案:

答案 0 :(得分:1)

肯定没有范围问题。范围适用于变量,而不适用于值。 (但是代码中缺少{存在问题。)

答案 1 :(得分:1)

不,没关系 - 在函数体外发生的复合文字具有静态存储持续时间。

答案 2 :(得分:0)

您正在尝试将可变大小的指针数组放入固定大小的结构中。这不可能是好事。