Question: Tried cleaning, restart and reboot did not work.

![Screenshot enclosed](https://i.stack.imgur.com/RP9Ou.png)

Answer: 
The problem is that when passed as arguments to a function, arrays decays to *pointers* to the first element, so the function

```
int sumEven(int myArray[]) { ... }

```

is actually equal to

```
int sumEven(int *myArray) { ... }

```

And taking the size of a pointer returns the size of the pointer and not what it points to.

If you need to know the size in the function, you should pass the number of elements as an argument:

```
int sumEven(int *myArray, size_t len) { ... }

```
Arrays *decay to pointers* when you pass them to a function. That means that the information regarding the size of the array is lost. 

This means that `(sizeof(myArray) / sizeof(myArray[0]))` will not do what you want in this context, because here `myArray` is a pointer. 

The canonical solution is to add another parameter representing the array size, and use that instead. This is the approach used in C. 

In C++, however, you should probably be using `std:: vector`, unless you have a specific reason to stick with arrays, which are notoriously error-prone.