我的作業分配在下面引用。萬一我誤讀了一些東西。從一個函數返回一個數組地址到一個指針(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;
}
你不能在函數中聲明一個變量,然後通過值將其返回給調用者,但是你可以將它的一個副本或一個地址返回到像堆對象那樣非本地的內存空間。 –