Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
3 / 2 / 2
Регистрация: 14.12.2009
Сообщений: 149

Имя массива - что это?

21.12.2018, 19:07. Показов 2646. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте
У меня возник вопрос.
Пусть есть массив
C++
1
int a[10];
Если написать
C++
1
a++;
Компилятор скажет, что для оператора требуется lvalue, значит a не lvalue
В то же время можно взять адрес а.
C++
1
int (*b)[10]=&a;
Так что же тогда а? lvalue или rvalue?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.12.2018, 19:07
Ответы с готовыми решениями:

Строка: Написать программу, которая читает строку и определяет, что это, Ваше имя, фамилия или отчество.
Написать программу, которая читает строку и определяет, что это, Ваше имя, фамилия или отчество. Если ни то, ни другое и не третье, то...

Что это за знак >> прочитал что это сдвиг вправо? что он делает
int d=6, c=5,f; f = d >> c; cout<< f; вывод 0

Шринковка массива- что это
Где -то натолкнулась на способ шринковки массива - удалению из него элементов,отвечающему определенному условию.. Расскажите поподробней...

8
Mental handicap
 Аватар для Azazel-San
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
21.12.2018, 19:37
Лучший ответ Сообщение было отмечено Nishen как решение

Решение

Цитата Сообщение от Fatinho Посмотреть сообщение
В то же время можно взять адрес а.
Цитата Сообщение от Fatinho Посмотреть сообщение
C++
1
int (*b)[10]=&a;
Та вы шо, с каких это пор здесь вы взяли адрес?
А вообще имя массива все таки l-value, но оно как бы рид-онли.

Добавлено через 2 минуты
Имя массива — non-modifiable lvalue;
0
3 / 2 / 2
Регистрация: 14.12.2009
Сообщений: 149
21.12.2018, 22:32  [ТС]
Цитата Сообщение от Azazel-San Посмотреть сообщение
Та вы шо, с каких это пор здесь вы взяли адрес?
Не знаю. Я всегда думал, что & это операция взятия адреса. И думал, что от массива можно взять адрес (&а), и это будет адрес на то место, где этот массив расположен. Что тип у выражения &а, будет int (*Т)[10]. И что например
C++
1
2
3
int a[10];
int (*b)[10]=&a;
b++;
b будет указывать на память, которая находится за пределами массива, сразу после последнего элемента.
Пожалуйста поправьте, где я ошибаюсь?
0
151 / 86 / 35
Регистрация: 05.08.2017
Сообщений: 257
21.12.2018, 22:37
Цитата Сообщение от Fatinho Посмотреть сообщение
Я всегда думал, что & это операция взятия адреса.
Так и есть

Имя массива это и есть указатель на первый его элемент
C++
1
2
3
4
5
6
7
int k[] { 1,2,3 };
    
int* p_k = k;
cout << *p_k << endl; // указывает на 1 элемент k, выведет 1
 
p_k = k + sizeof(k) / sizeof(*k); // указывает на участок, расположенный за границей массива, выведет мусор из памяти
cout << *p_k << endl;
0
3 / 2 / 2
Регистрация: 14.12.2009
Сообщений: 149
21.12.2018, 22:43  [ТС]
Цитата Сообщение от Resistanse Посмотреть сообщение
Имя массива это и есть указатель на первый его элемент
Это мне и так было известно
Вопрос во взятии адреса от имени массива
C++
1
int (*b)[10]=&a;
0
Mental handicap
 Аватар для Azazel-San
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
21.12.2018, 22:48
Fatinho, Да, я наверное не совсем так выразился, (&a) - это взятие адреса, а это int (*b)[10] указатель на массив из 10 элементов, те операция которую вы сделали это его инициализация этого указателя, а взятие адреса это только то что справа от =. Я типо хотел поправить вас, но не ясно выразился
1
151 / 86 / 35
Регистрация: 05.08.2017
Сообщений: 257
21.12.2018, 22:49
Цитата Сообщение от Fatinho Посмотреть сообщение
Вопрос во взятии адреса от имени массива
Цитата Сообщение от Fatinho Посмотреть сообщение
b будет указывать на память, которая находится за пределами массива, сразу после последнего элемента.
Так я написал уже это
C++
1
int* b = a + sizeof(a) / sizeof(*a);
Делим размер всего массива на размер первого элемента массива и получаем указатель, который указывает на элемент, слудующий за массивом
0
Mental handicap
 Аватар для Azazel-San
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
21.12.2018, 22:52
Цитата Сообщение от Fatinho Посмотреть сообщение
C++
1
b++;
Здесь мы просто начнем указывать на следующий блок памяти, т.е. мы сместимся на целых 40 (4 * 10) байт вверх по стеку.
0
3 / 2 / 2
Регистрация: 14.12.2009
Сообщений: 149
21.12.2018, 22:57  [ТС]
Добавлено через 41 секунду
Цитата Сообщение от Azazel-San Посмотреть сообщение
Здесь мы просто начнем указывать на следующий блок памяти, т.е. мы сместимся на целых 40 (4 * 10) байт вверх по стеку.
Ну да, я так и думал
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.12.2018, 22:57
Помогаю со студенческими работами здесь

Нюансы синтаксиса: что означает запись return класс (имя, имя) ?
Добрый день! Столкнулся в одном из кодов (приводится ниже, из книги Лафоре) с незнакомым мне синтаксисом. return time12(pm, hrs12,...

как вывести имя программы? именно имя, то что видно в провонике example.exe
собственно вопрос ^. это возможно? Добавлено через 18 минут догадался, кому надо ^^ #include &lt;iostream.h&gt; using...

Где - то слышал, что в указателе сохраняется информация о размере массива, верно ли это?
Привет! Ну вот допустим: int *X = new int; Можно ли по указателю X как то явно узнать, что он ссылается на непрерывный блок...

что надо сделать что бы клиент ввел имя адрес почты и коментарий , и это всё дело отправилось на почту которую он указал
Написал сайт, там есть страница свяжитесь с нами что надо сделать что бы клиент ввел имя адрес почты и коментарий , и это всё дело...

Незвестное имя x. Что это значит
прошу помочь. не могу понять в чем проблема program zmeika; uses crt; type spoint=record x:integer; y:integer; end; {тип...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru