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
数组不是以零结尾的,因此循环while (*x != NULL)将继续读取数组,直到找到零值单词或崩溃,或导致其他一些未定义的行为.
您需要向数组添加一个终止符(如果您可以选择一个值,可能为零,这将不是一个有效的数组元素),或者以其他方式返回长度.