我正在尝试编写一个返回指向数组的指针的函数,而我对“ 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()函数不能正常工作?