Учу Си по двум учебникам — Дейтелы в оригинале и О'Рейли "Изучаем программирование на C" в переводе.
Столкнулся со странным утверждением, которое, возможно, не могу корректно понять (ну или "спасибо" русскому переводу).
Со слов авторов:
"Адрес массива, это... адрес массива.
Если вы примените к переменной массива оператор &, результат не будет отличаться от значения самой переменной.
&s == s."
Удивился. Проверил:
#include <stdio.h>
int main ()
{
char array[] = "Hello you!";
char *pointer = "Hello you.";
printf("This is an adress of array[]: %p\n\n", array);
printf("This is an adress of &array[]: %p\n\n", &array);
printf("This is an adress of &array[1]: %p\n\n", &array[1]); // Для уверенности
printf("This is an adress of pointer: %p\n\n", pointer);
return 0;
}
Результат:
This is an adress of array[]: 0x7ffee5f78b6d
This is an adress of &array[]: 0x7ffee5f78b6d
This is an adress of &array[1]: 0x7ffee5f78b6e
This is an adress of pointer: 0x109c87eb3
Что с &, что без — адрес переменной массива никак не равен значению переменной.
И все таки, это же хваленые O'Reilly.
В чем здесь ошибка и чья она?