C ++:“静态”关键字并从函数返回数组

时间:2020-03-14 18:30:18

标签: c++ arrays pointers static

我正在尝试编写一个返回指向数组的指针的函数,而我对“ static”关键字的作用感到非常困惑。例如,此功能不起作用:

int* doesnt_work() {
    int r[] = {43, 67};
    return r;
}

我见过有人建议只将“ static”关键字放在数组前:

int* works_static() {
    static int r[] = {43, 67};
    return r;
}

但是我发现我可以通过在函数中声明一个指针,将其指向数组,然后返回新的指针而不是数组的名称来做同样的事情:

int* works_newPtr() {
    int r[] = {43, 67};
    int* p = r;
    return p;
}

在这种情况下,关键字“ static”到底是做什么的?为什么在works_newPtr()正常的情况下nots_work()函数不能正常工作?

0 个答案:

没有答案