我的作业分配在下面引用。万一我误读了一些东西。从一个函数返回一个数组地址到一个指针(C++)
“在一个称为PointerPractice.cpp文件,写入一个称为concatArrays函数,接受两个int阵列 作为参数和两个阵列连接成三分之一较大的阵列,该函数创建。 该函数应仅使用指针算术(无数组符号),并应返回一个指针 新创建的数组的函数应具有以下原型:。 INT * concatArray(INT * pArray1,INT尺寸1,INT * pArray2,INT size2个)
在你的主要功能:
- 创建大小为8的两个int阵列和10
- 使用循环,利用随机数填充两个阵列。每个随机数应该在 范围0至9(含)。
- 使用一些注释来打印两个数组,以指示正在打印哪个数组。
- 现在使用两个随机数组及其大小作为参数调用concatArray。
- 使用指针保存从concatArray返回的数组的引用。
- 最后,打印返回数组的一些注释表明它是从concatArray结果数组 。”
当我从功能本身进行打印,其打印出正确的。当我尝试打印出主要的,它打印出每个地址,而不是一个单一的数字号码的随机字符串从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;
当我在主调用函数:
ptrConcatArray = concatArray(myArray1, size1, myArray2, size2);
cout <<endl;
cout << "Resultant array:" << endl;
for(int i=0; i<size1; i++)
{
cout << *(ptrConcatArray+i)<<endl;
}
你不能在函数中声明一个变量,然后通过值将其返回给调用者,但是你可以将它的一个副本或一个地址返回到像堆对象那样非本地的内存空间。 –