Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.85/47: Рейтинг темы: голосов - 47, средняя оценка - 4.85
4 / 4 / 1
Регистрация: 30.11.2013
Сообщений: 108

Адрес элемента динамического массива

23.09.2014, 11:52. Показов 9591. Ответов 28
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, создан динамический массив, нужно вычислить адрес какого-нибудь элемента (зная адрес нулевого). В автоматическом знаю как делать: если указатель на нулевой элемент массива равен 1000, а сам массив int a[3][7], и мне нужно вычислить адрес элемента *(*(a+1)+5). 5*sizeof(int) = 20, 1*sizeof(int)*7 = 28. => адрес нужного элемента 1000+28+20 = 1048. Как по такому же принципу выяснить адрес элемента в динамическом двумерном массиве?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.09.2014, 11:52
Ответы с готовыми решениями:

Убедиться, что адрес первого элемента массива и адрес, хранящийся в указатели на этот массив равны.
Убедиться, что адрес первого элемента массива и адрес, хранящийся в указатели на этот массив - равны.

Не получается адрес динамического двумерного массива передать, как аргумент функции
/* Лабораторная работа №3 Во всех вариантах необходимо написать три функции, которые будут вызываться из функции main(). Первая...

Как правильно указать начальный адрес для динамического (обычного) массива?
Предположим у меня есть динамически выделяемый массив int *ptr0 = new int; Данный массив мне нужно разместить по конкретно указанному...

28
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
23.09.2014, 11:54
Какой динамический массив имеется в виду?
0
4 / 4 / 1
Регистрация: 30.11.2013
Сообщений: 108
23.09.2014, 11:55  [ТС]
Двумерный, к примеру 5х7.
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
23.09.2014, 12:03
Что ты подразумеваешь под динамическим массивом? std::vector?
0
4 / 4 / 1
Регистрация: 30.11.2013
Сообщений: 108
23.09.2014, 12:07  [ТС]
Нет.
C++
1
2
3
4
5
int** p = new int*[5];
for(int i = 0; i<3; i++)
{
p[i] = new int [7];
}
Добавлено через 32 секунды
И какая адресная арифметика у динамического массива?
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
23.09.2014, 12:09
C++
1
&p[1][5]
Вот адрес элемента.
0
4 / 4 / 1
Регистрация: 30.11.2013
Сообщений: 108
23.09.2014, 12:10  [ТС]
Как его вычислить именно "на листочке" формулой какой-то или еще как, ну и чтобы это было связано с адресной арифметикой
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
23.09.2014, 12:12
Цитата Сообщение от BboyBlackjack Посмотреть сообщение
И какая адресная арифметика у динамического массива?
арифметика у всех одинаковая:
C++
1
2
p[i] = *(p + i);
p[i][j] =  *(p[i]+j) = *(*(p+i)+j);
0
4 / 4 / 1
Регистрация: 30.11.2013
Сообщений: 108
23.09.2014, 12:13  [ТС]
Ничего не понимаю... Препод втирал, что по разному все, и адрес вычисляется по разному, про зависимость от разрядности системы говорил
0
Заблокирован
23.09.2014, 12:15
ТС имеет ввиду, как, например, имея массив int a[3][3]; и имея указатель, допустим, на 2-й подэлемент 1-го элемента, как его, ну скажем, проинкрементировать ....
0
4 / 4 / 1
Регистрация: 30.11.2013
Сообщений: 108
23.09.2014, 12:16  [ТС]
Скорее всего что-то в этом роде)
0
Эксперт по математике/физикеЭксперт С++
 Аватар для Ilot
2224 / 1426 / 420
Регистрация: 16.05.2013
Сообщений: 3,646
Записей в блоге: 6
23.09.2014, 12:17
Цитата Сообщение от BboyBlackjack Посмотреть сообщение
Препод втирал
Не втирал, а доводил до вашего сведения.
Цитата Сообщение от Tulosba Посмотреть сообщение
арифметика у всех одинаковая:
Не одинаковая и ваш второй пример тому доказательство. Двумерных динамических массивов не бывает. Если я не прав исправьте.
0
4 / 4 / 1
Регистрация: 30.11.2013
Сообщений: 108
23.09.2014, 12:20  [ТС]
Бывают, я писал кусок кода как такой массив объявлять
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
23.09.2014, 12:20
Цитата Сообщение от BboyBlackjack Посмотреть сообщение
Препод втирал, что по разному все, и адрес вычисляется по разному
Разница лишь в том, что строки будут лежать не подряд в памяти.
Миниатюры
Адрес элемента динамического массива  
0
Заблокирован
23.09.2014, 12:22
Добавлено через 24 секунды
Цитата Сообщение от Ilot Посмотреть сообщение
Двумерных динамических массивов не бывает
C++ (Qt)
1
std::vector<std::vector<int>> 2_D_Array
0
4 / 4 / 1
Регистрация: 30.11.2013
Сообщений: 108
23.09.2014, 12:23  [ТС]
И нельзя использовать директиву вектор, память под динамический массив выделить операцией new.
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
23.09.2014, 12:23
Цитата Сообщение от Ilot Посмотреть сообщение
Не одинаковая и ваш второй пример тому доказательство.
Хочешь сказать, что моя формула неверна для динамических массивов?
0
Эксперт по математике/физикеЭксперт С++
 Аватар для Ilot
2224 / 1426 / 420
Регистрация: 16.05.2013
Сообщений: 3,646
Записей в блоге: 6
23.09.2014, 12:24
Цитата Сообщение от Tulosba Посмотреть сообщение
Разница лишь в том, что строки будут лежать не подряд в памяти.
Вот за счет этого и разная арифметика.
C++
1
2
p[i][j] =  *(p[i]+j) = *(*(p+i)+j); //Динамический
p[i][j] =  *(p + i * N + j);//В стеке
Scrooge McDuck, спасибо кэп, но я говорил не о наборе одномерных массивов, а о структуре двумерного массива как в стеке. Пожалуй я просто не ясно выразился. Динамические массивы одномерны по определению. Да вы можете составить из ни двумерный массив. Однако для этого вы будете использовать дополнительную таблицу указателей чего нет в случае представления двумерного массива в стеке. Другими словами с помощью динамических массивов можно моделировать многомерные, но по сути это набор одномерных плюс таблицы указателей.
Цитата Сообщение от Tulosba Посмотреть сообщение
Хочешь сказать, что моя формула неверна для динамических массивов?
Нет я об этом не говорил. Разъяснение в начале поста.
0
Заблокирован
23.09.2014, 12:25
Tulosba, есть массив int A[3][3]; как получить указатель на a[1][2] элемент ?
0
4 / 4 / 1
Регистрация: 30.11.2013
Сообщений: 108
23.09.2014, 12:26  [ТС]
Что такое N в формуле?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.09.2014, 12:26
Помогаю со студенческими работами здесь

Увеличение элемента динамического массива
Пользователь задает динамический массив из трех элементов. Как вывести на экран этот же массив,только третий элемент будет на 1 больше...

Удаление элемента из динамического массива
Приветствую зашедших! Мне по условию дан динамический массив int элементов, в котором надо уничтожить ПЕРВЫЙ встречный 0. Подскажите, как...

Добавление и удаление элемента динамического массива
Подскажите какие существую способы добавления и удалеия элемента одномерного динамического массива(переопределяя размер массива)....

Добавление элемента в начало динамического массива
Господа подскажите пожалуйста ошибку в коде. Не верно работает добавление нового элемента в начало динамического массива. Не могу допетрить...

Удаление элемента динамического массива справа
Нужно удалить последний структурный элемент динамического массива. помогите пожалуйста никак не получается сделать эту функцию. Это...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru