я наткнулся на что-то довольно нечетного (для меня по крайней мере), в то время как я читал C учебник:Почему одно свободное измерение при передаче массивов в качестве параметра?
void foo(char arr[]){
}
void main(){
char old_buffer[100];
foo(old_buffer); //Working??!
char arr2[] = old_buffer; //Error!
}
Строка с комментарием об ошибке для меня ясно, old_buffer трактуется как адрес, так это может 't работает, потому что в массиве отсутствует информация о том, сколько памяти должно быть выделено. Но почему это работает во главе функции? Спасибо за вашу поддержку :)
Вы хотите сказать, почему он работает в 'void foo (char arr [])'? –
Да, точно :) – user2352375
'char * arr2 = old_buffer' и' char * arr2 [] = {old_buffer}; 'оба работают ... –