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

Прошу объяснить смысл оператора int**

04.02.2012, 02:18. Показов 14180. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Встретил в чужом коде следующй оператор: int**
вот в таком контексте:

(динамическое распределение памяти):
C++
1
2
3
4
int** m = new int*[5];
for (int i=0; i<5; i++)
 m[i] = new int[5];
trans(m, 5);
Вопрос: это указатель на указатель?

В учебной литературе я такого не встречал.
Будьте добры, объясните поподробней или дайте ссылку
Спасибо
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
04.02.2012, 02:18
Ответы с готовыми решениями:

Прошу объяснить о ссылках,указателях,стрелке -> и двоеточиях :: очень прошу я не понял синтаксис
Здравствуйте! Есть конкретно 4 типа: 1)стрелка (-&gt;) 2)указатели (*) 3)ссылки (&amp;) 4)2е двоеточий (::) а вопрос:что они собой...

Объяснить смысл программы
Помогите, препод просит объяснить суть программы, что делает и как, и порядок действий, для ее решения ...

Конструктор копирования (объяснить принцип и смысл)
Для чего, когда и почему используется этот &quot;конструктор копий&quot;? Поясните мне на примере нижеприведённого кода. Вот программа для...

5
Псевдослучайный
1946 / 1146 / 98
Регистрация: 13.09.2011
Сообщений: 3,215
04.02.2012, 02:25
Лучший ответ Сообщение было отмечено как решение

Решение

Цитата Сообщение от IFree Host Посмотреть сообщение
Вопрос: это указатель на указатель?
Да. В литературе есть, инфа 146%
3
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
04.02.2012, 02:51
Лучший ответ Сообщение было отмечено как решение

Решение

int** это не оператор, а тип. Указатель на указатель типа int.
Цитата Сообщение от IFree Host Посмотреть сообщение
int** m = new int*[5];
for (int i=0; i<5; i++)
m[i] = new int[5];
Рассуждаем так.
new выделяет память. Тут написано [5]. Ага, значит массив из пяти элементов. Теперь смотрим тип.
Тип int*, т.e. указателей. Т.е. выделяется память под массив указателей.
Дальше каждому указателю этого массива присваивается адрес массив, под который выделяется память в строке
C++
1
 m[i] = new int[5];
Теперь вопрос почему int**, а не что-то другое.
Вообще указатель m нам нужен для того, чтобы иметь доступ до массива указателей( а имея доступ к этому массиву указателей, получим доступ к массивам чисел) и потом освободить всю выделенную память.
Адрес он и в африке адрес. Что в int* m, что в int* m адрес будет один и тот же.
Но что будет, если указатель будет такой
C++
1
int*m = new int*[5];
Попробуем обратиться к элементу двумерного массива, под который выделяется память.
Допустим,
C++
1
m[1][2]
- это эквивалентно
C++
1
*(*(m+1)+2)
тут разыменовывается указатель m аш два раза. А т.к. тип у указателя m - int*, то такое не возможно.
А под такую задачу подходит тип int**.
Вообще что тут происходит
C++
1
*(*(m+1)+2)
m - это указатель, т.е. адрес.
указатель(адрес) складывается с единицей. Получается указатель на второй элемент массива типа int*, т.е. на второй указатель в этом массиве. Теперь разыменовываем *(m+1), т.е. получаем доступ к этому второму указателю(адресу).
Теперь по аналогии с предыдущем. *(m+1) - это тот самый второй указатель.
Складываем этот указатель(адрес) с двойкой. Получаем указатель на третий элемент массива типа int, т.е. на третье число в этом массиве.
Разыменовываем и получаем это число.
4
Заблокирован
04.02.2012, 11:19  [ТС]
Chelioss, спасибо за ответ! Просто супер!
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
04.02.2012, 12:24
Цитата Сообщение от IFree Host Посмотреть сообщение
Встретил в чужом коде следующй оператор: int**
Это не оператор. int - имя типа, * - признак указателя. То есть int** - тип указателя на указатель на int.
0
Заблокирован
04.02.2012, 16:50  [ТС]
taras atavin, ну и ты тоже, молодец
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.02.2012, 16:50
Помогаю со студенческими работами здесь

Прошу объяснить код С++
здравствуйте, прошу объяснить как для полного нуба простейшими словами данный кусок кода: y=150 (10010110 в двоичной) int y=150; ...

Объяснить работу оператора switch
Всем привет есть вопрос. В каком случае в блоке операторов caseнеобходимо использовать фигурные скобки? Вроде как, если используются...

В чем смысл двух перегрузок одного оператора?
Объясните, в чем здесь смысл перегрузки: inline bool operator == ( const char *Name ) const { return this-&gt;Name.c_str(...

Прошу объяснить первую строку
Здравствуйте, я прохожу на данный момент перегрузку операторов, в общем по теоретическому материалу я сейчас перегружаю оператор + в...

Прошу объяснить ввод символов
Дело касается самых основ, но что-то ускользнуло от моего понимания. #include &lt;iostream&gt; using namespace std; int main() { ...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru