Есть к примеру такой код:
void process_ptr(char* ptr) {
for (int i = 0; i < 10; i++)
ptr[i]++;
}
void process_array(char array[10]) {
for (int i = 0; i < 10; i++)
array[i]++;
}
int main() {
char* ptr = "0123456789";
char array[10] = "asdfasdfas";
process_ptr(ptr);
process_array(array);
return 0;
}
Интересует вопрос есть ли разница в том, как компилятор обрабатывает эти аргументы? push'ится ли копия массива на стек, или передается его указатель как в первом случае? Если не считать того, что компилятор будет ругаться если не совпадают размеры или пробую переполнить.