从c ++中的函数返回数组

sin*_*kng 0 c++ arrays pointers codeblocks

这个我的程序从c ++中的函数返回数组

#include <iostream>
using namespace std;

int *pTest(){
    static int a[] = {2,3,4,6,9};
    return a;
}

int main(){
    int *x;
    x = pTest();
    while(*x != NULL){
        cout << *x++ << "  ";
    }
}
Run Code Online (Sandbox Code Playgroud)

根据我的输出应该是2 3 4 6 9
我的机器输出2 3 4 6 9 1,
为什么1在输出中有额外的.
我正在使用codeblocks,gcc 4.8.1

Mik*_*our 6

数组不是以零结尾的,因此循环while (*x != NULL)将继续读取数组,直到找到零值单词或崩溃,或导致其他一些未定义的行为.

您需要向数组添加一个终止符(如果您可以选择一个值,可能为零,这将不是一个有效的数组元素),或者以其他方式返回长度.