Function returning array but main showing garbage [duplicate]

Solution 1:

theArray is a local array in the function add5ToEveryElement() which you are returning to main(). This is undefined behaviour.

Minimally you can change this line:

int theArray[5];

to:

int *theArray = new int[5];

It'll work fine. Don't forget to delete it later in main(). SInce you modify the original pointer, save it:

int *arr = add5ToEveryElement(noArr, size);
int *org = arr;
// Rest of the code

//Finally

 delete[] org;