Тема: Масив, як параметр функції.
Вітаю всіх. Поясніть мені, що відбувається з виділенням пам'яті при виконанні функції foo в наступному коді:
void foo(char arr[5])
{
for (int i = 0; i < sizeof(arr); i++) {
printf("%c", arr[i]);
}
printf("\n");
}
int main()
{
char* str = "hello";
foo(str);
}
Очевидно, вказівнику arr буде присвоєно значення str. Але незрозуміло, що відбувається в частині char arr[5].
Поки я розумію це так, що при виконанні функції foo на стеку буде виділено 5 байт пам'яті, але вказівнику arr не буде надано адресу початку цієї пам'яті, а буде присвоєно адресу покажчика str. 5 байт будуть даремно виділені?