【发布时间】:2014-03-30 10:17:36
【问题描述】:
下面引用了我的家庭作业。以防我看错了什么。
“在一个名为 PointerPractice.cpp 的文件中,编写一个名为 concatArrays 的函数,该函数接受两个 int 数组 作为参数并将两个数组连接成函数创建的第三个更大的数组。 该函数应仅使用指针算术(无数组表示法)并应返回指向 新创建的数组。该函数应具有以下原型: int* concatArray(int* pArray1, int size1, int* pArray2, int size2)。
在您的主要功能中:
- 创建两个大小为 8 和 10 的 int 数组。
- 使用循环,用随机数填充两个数组。每个随机数都应该在 范围 0 到 9(含)。
- 打印两个数组,并带有一些注释,指示正在打印哪个数组。
- 现在调用 concatArray,将两个随机数组及其大小作为参数。
- 使用指针,保存对从 concatArray 返回的数组的引用。
- 最后,打印返回的数组,并带有一些注释,表明它是生成的数组 来自 concatArray。”
当我从函数本身打印时,它会正确打印出来。当我尝试在 main 中打印它时,它会打印出每个地址的随机数字字符串,而不是 0-9 的单个数字。
功能:
int* concatArray(int* pArray1, int size1, int* pArray2, int size2)
{
int newArray[size1+size2];
for(int i=0; i<size1+size2; i++)
{
if(i>size1)
{
*(newArray+i) = *(pArray2+i-size1);
}
else
{
*(newArray+i) = *(pArray1+i);
}
}
cout<<endl;
for(int i=0; i<size1+size2; i++)
{
cout << *(newArray+i)<<endl;
}
return newArray;
我在 main 中调用函数的地方:
ptrConcatArray = concatArray(myArray1, size1, myArray2, size2);
cout <<endl;
cout << "Resultant array:" << endl;
for(int i=0; i<size1; i++)
{
cout << *(ptrConcatArray+i)<<endl;
}
【问题讨论】:
-
您不能在函数中声明一个变量,然后将其按值返回给调用者,但您可以将其副本或地址返回到非本地的内存空间(如堆)对象。
标签: c++ arrays function pointers