How are arrays passed?

There is nothing we can do picture There is nothing we can do · Apr 1, 2010 · Viewed 30.1k times · Source

Are arrays passed by default by ref or value? Thanks.

Answer

anon picture anon · Apr 1, 2010

They are passed as pointers. This means that all information about the array size is lost. You would be much better advised to use std::vectors, which can be passed by value or by reference, as you choose, and which therefore retain all their information.

Here's an example of passing an array to a function. Note we have to specify the number of elements specifically, as sizeof(p) would give the size of the pointer.

int add( int * p, int n ) {
   int total = 0;
   for ( int i = 0; i < n; i++ ) {
       total += p[i];
   }
   return total;
}


int main() {
    int a[] = { 1, 7, 42 };
    int n = add( a, 3 );
}