@first example: isn't that taking the address of the int array (aka the address of the first element in the array) and implicitly converting it to a pointer-to-int? I think that's normal behavior and not the compiler 'fixing' things. At least, for as much array/pointer interactivity I know, I think that's what is happening.
EDIT: first example doesn't even compile under clang++ (error message, not warning)
@first example: isn't that taking the address of the int array (aka the address of the first element in the array) and implicitly converting it to a pointer-to-int? I think that's normal behavior and not the compiler 'fixing' things. At least, for as much array/pointer interactivity I know, I think that's what is happening.
I don't think so...
Expand that code to this and tell me what you think:
1 2 3 4
int arraybuffer[20];
int * array = arraybuffer;
int ** parameter = &array;
int * in_the_function = parameter; // <--- int** to int* ?!?
@first example: isn't that taking the address of the int array [...] and implicitly converting it to a pointer-to-int? I think that's normal behavior and not the compiler 'fixing' things.