В моей main()
функции я объявлен array
типа int
с номерами от 1 до 10. Я тогда две других функций типа int*
, которые принимают этот массив и его размер в качестве параметров, выполнить некоторые операций, и каждый возвращает указатель на новый массив. У меня возникают проблемы с третьей функцией, которая печатает содержимое массива.Печать содержимого массива измененная в функции
#include <iostream>
using namespace std;
const int SIZE_OF_ARRAY = 10;
int main() {
int array[SIZE_OF_ARRAY] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int *ptr1 = 0;
ptr1 = function1(array, SIZE_OF_ARRAY);
print(array, SIZE_OF_ARRAY);
cout << endl;
int *ptr2 = 0;
ptr2 = function2(array, SIZE_OF_ARRAY);
print(array, SIZE_OF_ARRAY);
return 0;
}
void print(int array[], const int SIZE_OF_ARRAY)
{
for (int i = 0; i < (SIZE_OF_ARRAY * 2); i++)
{
cout << array[i] << " ";
}
}
int* function1(int array[], const int SIZE_OF_ARRAY)
{
int *ptr = new int[SIZE_OF_ARRAY];
// Do stuff.
return ptr;
}
int* function2(int array[], const int SIZE_OF_ARRAY)
{
int *ptr2 = new int[SIZE_OF_ARRAY * 2];
// Create new array double in size, and set contents of ptr2
// to the contents of array. Then initialize the rest to 0.
return ptr2;
}
Как и следовало ожидать здесь, результат вызова функции print()
дважды что-то вроде:
1 2 3 4 5 6 7 8 9 10 465738691 -989855001 1483324368 32767 -1944382035 32767 0 0 1 0
1 2 3 4 5 6 7 8 9 10 465738691 -989855001 1483324368 32767 -1944382035 32767 0 0 1 0
Но я хочу, чтобы результат, как это вместо:
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10 0 0 0 0 0 0 0 0 0 0
Как может Я это делаю? (Обратите внимание, что для этого назначения я использую C++ 98). Заранее спасибо.
Возврат 'новых''d отчислений от функций просто требует утечки памяти. Вы должны использовать векторы или постоянный размер, регулярные массивы. –