+ 6
How do you make a function return an array?
I made a code to test it, but it gives me errors and I don't understand them. I think I have to change something on the line with int test(){ #include <iostream> using namespace std; int test(){ int array[3] = {1, 2, 3}; return array; } int main() { cout << test() }
10 Antworten
+ 8
Sorry but you cannot return an array from a function.
But doesn't matter !
C++ offers various solutions.
Don't try strange workarounds..
Instead use available features :
1) create your own class with all you need.
2) use the standard template library , it is standard!
std::vector or std::array
That way is easy to return an object and it's correct
std::vector<type> function ( parameters)
{
std::vector<tipe > output;
// code
return output;
}
+ 6
You don't need to because C++ does this for you
https://code.sololearn.com/cmM0pQC9B1ZY/?ref=app
+ 3
#include <iostream>
using namespace std;
int *test( int array[] ) {
return array; }
int main() {
int arr[3]={2,2,3};
int *p = test(arr);
cout<<p[0]<<p[1]<<p[2];
}
+ 3
return
+ 3
We see how simple returning an integer is because we just return a copy of the variable in that memory location, also called as pass by value.
But with array it's a different story, since array is a continous block of memory, we just pass the address that points to start of array (pointer variable). Now to access the array we just keep adding one to access next block of memory.
*(arr + 0) or arr[0] => 1st address
*(arr + 1) or arr[1] => 2nd address
*(arr + 2) or arr[2] => 3rd address
*(arr + 3) or arr[3] => 4th address
..
...
and so on
Btw can we sonehow pass array with pass by value in C++ like we can in JavaScript?
+ 2
you can also use static array, as knowing that the lifetime of static variable is throughout the program:
https://code.sololearn.com/c2LBfZ076X5M/#cpp
+ 2
Array is equivalent of pointer,
int[] is same as int*
char[] is same as char*
Object[] is same as Object*
So if you need an array out of function then return type should be a pointer and assign to same type variable.
Example:
int[] myArray = {1, 2, 3, 4, 5};
int* function(int* array) {
// some operation on array
return array;
}
int[] intArray = function(myArray) ;
+ 1
In C++, array is always passed by pass by reference. So as such you do not need to return the array.
0
Thx, I'll try it