根据函数返回的数组创建动态数组

时间:2014-12-23 16:36:02

标签: c++ arrays pointers dynamic-arrays

我目前正在尝试学习C ++,我正在做的其中一项培训练习要求我执行以下操作:

创建一个动态数组,向其中添加100个int值。

编写一个计算每个数组元素的平方的函数,并将此int值保存为数组中的位置100 + element_index。

目前我已经创建了一个动态数组并用伪随机值填充它。我想要做的是计算这些随机值的平方,并在数组的末尾“追加”它们。

变量firstArray是先前定义的,但设置为100。

typedef int* intPtr;
...
...
srand((unsigned)time(0));

intPtr myArray;
myArray = new int[firstArray];
for (int i = 0; i < firstArray; i++)
    ptr[i] = (rand() % 10);

这将创建我的初始动态数组,并为数组中的每个位置提供0到10之间的随机值。

如果我不必使用函数,我可以轻松地创建一个新的动态数组,复制前100个值,然后计算方块并将它们放在最后。我尝试了一些伪代码来进行练习,但我不确定如何正确实现它。

Create dynamic array of size 100, called myArray
Fill each indexed location with a random value between 0 and 10
Pass the dynamic array into a function

Function creates a new dynamic array of size 200
The values on location 0-99 from myArray are copied over
Calculate the square of the value on location n, and write it to location n+100
Return the dynamic array

Delete [] myArray

Create new dynamic array of size 200, called myArray
Copy the values from the array returned by my function into myArray
Delete the array returned from my function

我的问题涉及将信息传递给函数,并返回新信息:

如何创建一个可以将动态数组传递给它的函数,让它返回另一个动态数组?

如果无法回答这个问题,我也非常希望得到关于结构的反馈,问题中包含的信息,以及这不是正确的问题类型,所以我可以提出更好的问题。将来

2 个答案:

答案 0 :(得分:0)

我没有看到任何要求数组需要分配两次的要求。您可以分配所有内存一次。

// Allocate all the memory.
intPtr myArray = new int[firstArray*2];

// Fill the first part with random numbers
for (int i = 0; i < firstArray; i++)
    ptr[i] = (rand() % 10);

答案 1 :(得分:0)

采用动态数组并返回动态数组(整数)的函数将具有以下签名:

int* newArray(int* array, int size);

然后,实现将从以下开始:

int* newArray(int* array, int size)
{
    int* ret = new int[size * 2]; // double the size

    // stuff to populate ret

    return ret;
}

int* myBiggerArray = newArray(myArray, firstArray);
// use myBiggerArray
delete [] myBiggerArray;

另外,请远离typedef int*之类的内容。 int*已经足够简洁明了。