мне нужно понять, в чем разница между:В чем разница между указателем на int и указателем на указатель на int в C++?
указатель на Int
и
указатель на указатель на Int
я не думаю, что вопросы языка но, чтобы быть в курсе, я беру C++.
Спасибо!
мне нужно понять, в чем разница между:В чем разница между указателем на int и указателем на указатель на int в C++?
указатель на Int
и
указатель на указатель на Int
я не думаю, что вопросы языка но, чтобы быть в курсе, я беру C++.
Спасибо!
Указатели - это только адрес памяти. Таким образом, указатель на int означает переменную, значение которой является адресом памяти для int, а указатель на указатель на int означает переменную, значение которой является адресом памяти указателя на int, а значение этого указателя на int - адрес памяти для int.
Предположим, вы определяете три переменные следующим образом.
int a = 184; // Plain int, value 184.
int *b = &a; // Pointer to int, specifically pointing to a.
int **c = &b; // Pointer to pointer to int, which points to b, which points to a.
Вот как выглядят эти переменные в памяти. (Обратите внимание, что только значение фактически сохраняется в памяти. Тип выводится из кода, который использует эту память.)
+------------+ +------------+ +------------+
type | int | | int* | | int** |
+------------+ +------------+ +------------+
address | 0x02618368 | | 0x02618372 | | 0x02618376 |
+------------+ <--- +------------+ <--- +------------+
value | 184 | | 0x02618368 | | 0x02618372 |
+------------+ +------------+ +------------+
Таким образом, чтобы получить Int из c
, вам нужно будет разыменованием его дважды. Первое замечание принимает значение от c
, интерпретирует его как адрес указателя на int и ищет этот адрес для получения указателя на int, который равен b
. Второе разыменование принимает значение от полученного указателя к int, интерпретирует его как адрес int и ищет этот адрес для получения int, который равен a
.
Да, это было непонятно. Я исправил это сейчас. –
«указатель на int» переменная, которая может содержать адрес (где в памяти вы можете найти что-то) «int». «указатель на указатель на int», который может содержать адрес переменной, который может содержать адрес 'int'. Первый отвечает на вопрос «Где я могу найти« int »? второй отвечает на вопрос «Где я могу найти, где я могу найти« int »? – user4581301
, так что это не похоже на указатель на int, означающий массив одного измерения, а указатель на указатель - это массив из двух измерений? !! –
Нет, но они могут быть использованы так, если бы ваш код был написан для обработки указателей как массивов. В этом случае адрес, который содержит каждый указатель, интерпретируется как первый элемент массива. –