for num in range(1,101):
prime = True
for i in range(2,num/2):
if (num%i==0):
prime = False
if prime:
print num
theArray
является локальным массивом в функции add5ToEveryElement()
, которую вы возвращаете в main (). Это неопределенное поведение.
Минимально вы можете изменить эту строку:
int theArray[5];
to:
int *theArray = new int[5];
Все будет работать нормально. Не забудьте delete
это позже в main (). SInce вы измените исходный указатель, сохраните его:
int *arr = add5ToEveryElement(noArr, size);
int *org = arr;
// Rest of the code
//Finally
delete[] org;
это идеальный код
# include <conio.h>
# include <iostream>
using namespace std;
int * add5ToEveryElement(int arr[], int size)
{
int *theArray = new int[5];
for(int i=0; i<size; i++)
{
theArray[i] = arr[i] + 5;
cout<<theArray[i]<<endl;
}
return theArray;
}
void main()
{
const int size = 5;
int noArr[size];
for(int i=0; i<size; i++)
{
noArr[i] = i;
}
int *arr = add5ToEveryElement(noArr, size);
int *p = arr;
cout<<endl;cout<<endl;
for(int i=0; i<size; i++)
{
cout<<arr[i]<<endl;
}
cout<<endl;cout<<endl;cout<<endl;cout<<endl;
for(int i=0; i<size; i++)
{
cout<<*arr<<endl;
*arr++;
}
getch();
delete[] p;
}
Возврат массива из функции обычно считается плохим.
Если вы НЕ ДОЛЖНЫ иметь «новый» массив, я бы предположил, что типичный случай в C и C ++ должен изменить входной массив. Если функция CALLING хочет иметь два отдельных массива, тогда она может сделать это, создав собственную копию. В качестве альтернативы вы можете написать свой код, чтобы в вашу функцию были переданы два массива, например.
void add5ToEveryElement(int arr[], int arr2[], int size)
{
for(int i=0; i<size; i++)
{
arr2[i] = arr[i] + 5;
cout<<theArray[i]<<endl;
}
}
, тогда ваш главный вызовет два аргумента массива, и если вы хотите использовать то же самое, что и вход и выход, он тоже это сделает.
Конечно, это не совсем ответ на ваш вопрос, но он дает «лучшее» решение вашей проблемы.
Мне вообще не нравится распределение в функциях - особенно «скрытое» распределение (эта функция говорит, что добавляет 5 к каждому элементу, а не «выделяет массив с добавлением 5 к каждому элементу»). Код никогда не должен удивлять, и выделение памяти - это немного неожиданность, если вы только попросили добавить 5 к каждому элементу)