mr-Evan
@mr-Evan

Столкнулся со странным утверждением в книге по C. Так какой же адрес у переменной массива?

Учу Си по двум учебникам — Дейтелы в оригинале и О'Рейли "Изучаем программирование на 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.
В чем здесь ошибка и чья она?

5df00a1fe14c9285805901.png
  • Вопрос задан
  • 274 просмотра
Решения вопроса 1
wisgest
@wisgest
Не ИТ-специалист
array == &array[0]
&array численно равен array, но имеет другой тип.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
gbg
@gbg Куратор тега C++
Любые ответы на любые вопросы
Адрес массива-это адрес массива. О'Рейли правильно пишут.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы