函数的返回值未返回
The return value of the function isn't being return
我需要编写一个函数,该函数接受数组和数组的大小作为参数。该函数应创建一个新数组,该数组的大小是参数数组的两倍。该函数应将参数数组的内容复制到新数组,并用 - 初始化第二个数组的未使用元素。该函数应返回指针到新数组。因此,这是我需要完成的提示。我在功能中获得了想要的数组,但并未将其带入主要功能。
void moveOver(int *arr, int size)
{
int *arrp=nullptr;
arrp= new int[size + 1];
//arrp[0] = 0;
for (int i = 1; i <= size; i++)
{
arrp[i] = arr[i-1];
}
arr = new int[size + 1];
*arr = *arrp;
for (int i = 0; i < size + 1; i++) {
//cout << *(arr+i) << endl;
cout << arrp[i] << endl;
}
}
int main()
{
const int size = 4;
int arr[size] = { 1,2,3,4 }, *arrptr=nullptr;
arrptr = arr;
moveOver(arr, size);
for (int i = 0; i <=size ; i++) {
cout << arr[i] << endl;
}
return 0;
}
打印时,它仅打印出4个索引而不是我需要的5个索引。任何意见,将不胜感激。我也想使用指针和数组,我不能使用向量
arr
是moveOver()
函数内部的局部变量。分配给它没有影响main()
中的变量。在main()
中,arr
是一个数组,而不是指针,因此您不能重新分配给其他数组。
您需要更改moveOver()
,因此需要参考。然后,您可以将arrptr
传递给它,并且该功能将能够重新分配。
请参阅C 中的参考/值
中的通过您遇到的另一个问题是*arr = *arrp;
不复制整个数组,它只是复制数组的第一个元素。但是,根本不需要为arr
分配一个新数组。您可以简单地执行arr = arrp;
复制指针。
void moveOver(int *&arr, int size)
{
int *arrp = new int[size + 1];
arrp[0] = 0;
for (int i = 1; i <= size; i++)
{
arrp[i] = arr[i-1];
}
arr = arrp;
for (int i = 0; i < size + 1; i++) {
//cout << *(arr+i) << endl;
cout << arrp[i] << endl;
}
}
int main()
{
const int size = 4;
int arr[size] = { 1,2,3,4 }, *arrptr=nullptr;
arrptr = arr;
moveOver(arrptr, size);
for (int i = 0; i <= size ; i++) {
cout << arrptr[i] << endl;
}
return 0;
}
相关文章:
- (C++)分析树以计算返回错误值的简单算术表达式
- 在没有定义返回类型的函数中返回布尔值,并将结果保存在无错误的char编译中-为什么
- 获取从C++中同一类中的构造函数调用的方法返回的值
- 为什么在我的函数类型后使用引用运算符 (&) 允许我修改它返回的值?
- 格式化浮点值:返回默认值
- 为什么我的程序在for循环中k=0时返回垃圾值
- 不能将方法返回的值用于另一个方法
- 如何返回实际值(在我的例子中是无符号字符数组)而不是来自 C++ 函数的指针?
- 在对象数组中搜索字符串并返回相应值的函数
- 在递归中返回完整值
- Python os.system() 返回错误值
- 函数不返回默认值
- openCL 内核返回垃圾值,尽管没有错误
- 返回空值的字符串值
- 如何使用返回布尔值的函数?
- 为什么 const 函数返回左值而不是右值?
- 从 C++ 中的函数返回此值
- Gmock:返回无效值
- 是否可以使用函数返回的值初始化数组
- 可以返回右值引用吗?