You write:
When you pass an array to a function what you actually pass is a pointer to it.
That's stupid. Not you, the C++ people.
Inside a function one should either reference a global array (for which a pointer is fine) or have a local copy of it as a passed parameter, as happens with local variables etc. Pure laziness.
Reminds me of a couple of things, the first is blank lines in epubs. They aren't allowed because they might be a little difficult to implement and some nazi said so. Blank lines are widespread in printed books and magazines - compositors for printed books have many tricks to stop them from being on the first or last lines of pages and thus hard to recognise, but in flowed text there are no first or last lines on pages; however epub displaying programs could easily use the same tricks. More laziness.
The second is (or was) the tendency of FreeCAD to burp and refuse to continue when a union had less than two parts in it. No need, even if it's empty - it'll still be fine, and you shouldn't have to delete the union just because someone says so - you might want to add to it later, and if (where_the_union_should_be) is swamped in many layers of guff that need deconstructing and reconstructing ..
I have digressed more than enough.
On a somewhat related-to-the-subject note, I'd like to be able to do something like this:
void myfunction(int[] array_name, int name2){
called by eg
myfunction (int{1,2,3,4,5},11];
where {1,2,3,4,5} turns into a local array of five ints .
they say I'm a dreamer
A nice function which you can stuff anything into ..