|
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
|
|
Что такое указатель на массив?18.02.2020, 15:28. Показов 7350. Ответов 108
Метки нет (Все метки)
0
|
|
| 18.02.2020, 15:28 | |
|
Ответы с готовыми решениями:
108
Что такое хэндлер файла? Что такое файловый указатель?
Что такое указатель на член класса? |
|
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
|
|
| 19.02.2020, 01:04 [ТС] | |
|
Azazel-San, так нету разAzazel-San, так такой код выдаст в любом случае 8(на х64) тк размер указателя же статический
0
|
|
|
Mental handicap
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
|
||
| 19.02.2020, 01:06 | ||
|
sizeof(arr) = 20 * 10 * sizeof(double) sizeof(arr[0]) = 20 * sizeof(double) arr + 1 == &arr[1], тогда arr[1] == arr[0] + sizeof(arr[0])
0
|
||
|
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
|
|
| 19.02.2020, 01:13 [ТС] | |
|
Azazel-San, было количество элементов подмассива те 20,а к чему все записи выше? То что Вы написали в прошлом ответе и здесь это разные вещи
0
|
|
|
Mental handicap
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
|
||||
| 19.02.2020, 01:19 | ||||
|
Добавлено через 30 секунд
0
|
||||
|
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
|
|
| 19.02.2020, 01:27 [ТС] | |
|
Azazel-San, Вы писали в первом ответе sizeof double (*) - это размер указателя, те 8 байт, без разницы на что он указывает, он всегда 8 байт будет в 64 битной архитектуре
0
|
|
|
Mental handicap
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
|
|||||||
| 19.02.2020, 01:29 | |||||||
sizeof(arr[0]) в смысле как sizeof(double(*)[20]):
0
|
|||||||
|
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
|
|
| 19.02.2020, 01:33 [ТС] | |
|
Azazel-San, тогда ладно)
0
|
|
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
|||||
| 19.02.2020, 07:46 | |||||
sizeof(arr[0]) - это sizeof(double[20]), а не sizeof(double(*)[20])Добавлено через 1 минуту * - это в данном случае умножение.
0
|
|||||
|
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
|
||||||
| 19.02.2020, 08:02 [ТС] | ||||||
|
DrOffset, почему адресс указателя и указатель имеют одинаковый адресс?
0
|
||||||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
||
| 19.02.2020, 08:17 | ||
|
У вас есть адрес объекта массива в первой строке. И адрес первого элемента массива во второй. Это разные два адреса, у них разные типы. Численно они совпадают потому что представляют доступ к одной и той же памяти. Если создать простую структуру в стиле С и взять адрес объекта структуры и ее первого элемента - они тоже совпадут.
0
|
||
|
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
|
|
| 19.02.2020, 08:27 [ТС] | |
|
DrOffset, arr - указатель на первый элемент внутреннего массива, соответственно указатель на массив, он же является указателей на первый элемент этого массива, & - оператор взятия адреса, если я применяю & к указатель то выходит адресс указателя, разве если я напишу & arr то это не будет адресс указателя?
0
|
|
|
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
|
|
| 19.02.2020, 08:32 [ТС] | |
|
Croessmah, но компилятор неявно заменяет везде arr на &arr[0]
0
|
|
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
|||||||
| 19.02.2020, 08:32 | |||||||
|
Учите систему типов языка С++. arr - это массив. Я же показывал пример с типом T выше. Внимательно его изучите и осмыслите. &arr - даст указатель на массив Также у массивов есть уникальная особенность, массив неявно приводится к указателю на свой первый элемент в определенных выражениях (а не во всех). Например вот здесь
T *, тип arr - T[10].
0
|
|||||||
|
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
|
|
| 19.02.2020, 08:43 [ТС] | |
|
DrOffset, да у меня проблемы не со всей системой, а только с массивами, arr же почти всегда будет равен указатель на его первый элемент, вроде как только decltype выведет с него тип массива, вот есть массив int arr[10], если я сделаю & arr - что это?
Добавлено через 3 минуты Croessmah, в книге чётко написано :"Однако у массивов есть одна особенность - места их использования компилятор автоматически заменяет указателем на первый элемент" Добавлено через 2 минуты DrOffset, arr - это массив, но как только дело доходит до момента std::cout << arr то это уже не массив, а указатель на его первый элемент, тогда &arr - операция взятия адреса указателя на первый элемент массива, ну что не так?
0
|
|
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
||
| 19.02.2020, 08:50 | ||
|
Этим отличается учебник от профессиональной литературы. В учебнике делают упрощения, в профессиональной литературе - нет.
1
|
||
|
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
|
|
| 19.02.2020, 08:54 [ТС] | |
|
DrOffset, но то что земля имеет форму шара - это неправда, а то что arr заменяется на &arr[0] это правда
0
|
|
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
||||||||
| 19.02.2020, 08:58 | ||||||||
1
|
||||||||
|
Неэпический
|
||||||||||||||
| 19.02.2020, 09:00 | ||||||||||||||
int и long?
i? int.Какой тип даст &i? int * - указатель на int.Какой тип имеет переменная d? long.Какой тип даст &d? long * - указатель на long.Можно вызвать foo(d)? Да, можно.Можно вызвать foo(i)? Да, можно. Но ведь тип переменной i - int, а функция приминает long. Как так? Применяется неявное преобразование типа и получается новая временная переменная типа long, которая и уходит в функцию.Можно вызвать bar(&d)? Да, можно.Можно вызвать bar(&i)? Нет, нельзя. А нельзя потому что не разрещается неявно преобразовывать указатель типа int * (указатель на int) в указатель типа long * (указатель на long).С массивами тоже самое.
arr? int[10].Какой тип даст &arr? int(*)[10] - указатель на массив из 10-ти int'товМожно вызвать foo(arr);? Да, можно. Но ведь тип переменной arr - int[10], а функция приминает int *. Применяется неявное преобразование типа и получается новая временная переменная типа int *, которая и уходит в функцию. Полученный указатель указывает на первый элемент массива.Вот это оно и есть - "волшебное" преобразование из-за которого кажется, что массив - это указатель. Можно вызвать foo(&arr);? Нет, нельзя. А нельзя потому что не разрещается неявно преобразовывать указатель типа int(*)[10] (указатель на массив int[10]) в указатель типа int * (указатель на int).Теперь разница между массивом, указателем на массив и просто указателем на элемент этого массива) стала более наглядной? Добавлено через 27 секунд Добавлено через 1 минуту Но книга - это не спецификация, и неформально, получается одно и то же. Это Вы почему-то не можете понять этого.
1
|
||||||||||||||
| 19.02.2020, 09:00 | |
|
Указатель на ссылку или что это такое? Что такое указатель и с чем его есть
Что такое указатель? Что быстрее использовать, массив э-в, или указатель на массив э-в? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Книги по геймдизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version
1. 2003 - 06 - Designing Virtual Worlds (1st Edition)
Автор: Richard A. Bartle | Объем: 768 стр.
Ссылки: Amazon
. . .
|
Родители токсичные абьюзеры по отношению к своим детям ругают их оскорбляют не любят
zorxor 08.11.2026
Жить в атмосфере постоянных оскорблений, критики и холодности со стороны родителей — это тяжелое и болезненное испытание, которое оставляет глубокие эмоциональные раны. Токсичное и абьюзивное. . .
|
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы.
Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
|
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version
Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
|
|
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров".
Задача:
Запрет инициалов.
Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
|
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . .
Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
|
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг.
Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует.
В процессе разработки. . .
|
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
|