从c++中的函数返回数组
returning array from function in c++
这是我的程序,用于从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++ << " ";
}
}
根据我的说法,输出应该是2 3 4 6 9
但在我的机器上输出是2 3 4 6 9 1
,
为什么在输出中存在额外的CCD_ 3
我使用的是codeblocks
,gcc 4.8.1
数组不是零终止的,因此循环while (*x != NULL)
将继续读取数组之外的内容,直到它找到零值字、崩溃或导致其他未定义的行为。
您需要向数组中添加一个终止符(如果您可以选择一个值,可能是零,它将不是有效的数组元素),或者以其他方式返回长度。
您可以使用计数并获取数组的大小。像这样:
int k = 0;
while(k <= sizeof(x)){
cout << " "<< *x++;
k++;
}
使用std::vector,您的函数将是:
std::vector<int> ptest() {
static const int a[] = {2,3,4,6,9};
std::vector<int> vec (a, a + sizeof(a) / sizeof(a[0]) );
return vec;
}
相关文章:
- 从 C++ 中的函数返回数组地址问题
- 如何在 c++ 函数中返回数组
- 如何从 c++ 中的函数返回数组
- 为什么 c++ 函数可以正确返回数组的大小?
- 解释通过从函数引用返回数组的语法
- (C++)我的函数不返回数组
- 如何按 C++ 中的值从函数返回数组
- 返回数组中值的指针地址
- 创建一个函数来转换数组元素的类型并返回数组的地址
- 使用数组类返回数组c++
- 如何使函数返回数组?用于制作在VB.NET中使用的DLL
- 从函数 BY VALUE 返回数组,返回结构时会发生什么?
- 调用和打印函数,在 C++ 中返回数组
- 如何使用递归函数返回数组中整数的索引?
- 从函数返回数组时是否需要删除
- 为什么从函数返回数组时需要将数组声明为静态数组.(C++)
- C++返回数组而不进行动态内存分配?
- 在函数 c++ 中返回数组时出现问题
- 如何从C 中的函数返回数组
- 如何使类函数返回数组,然后将其调用并存储在 main 中