2016-02-05 2 views
-5

Я часто видел C++-программы с указателем на указательную переменную i.e ** i. Что это значит и почему оно используется. Нельзя использовать только один указатель вместо этого. В чем разница между одним указателем и указателем на указатель. Пожалуйста, объясните каждый шаг. Спасибо.Что означает указатель на указатель?

+0

каждый шаг чего? а указатель на указатель - обычный нормальный указатель. его указатель, который просто указывает на что-то, указывающее на блок памяти – DTSCode

+1

какая разница между поститом, который говорит, что «носки лежат под кроватью», и пост-он, который гласит: «Направления носков находятся на пост-это на холодильник"? –

+0

Представьте себе массив. Массив - это указатель на кучу элементов в строке. Теперь представьте указатель на массив - это указатель на указатель. –

ответ

1

Переменные занимают некоторое пространство для хранения. Это пространство берется из памяти. Предположим, ваш стек (памяти) начинается в 0x12 34 56 78 и у вас есть целое a со значением 4:

int a = 4; 

Ваша память может выглядеть следующим образом:

0x12 34 56 78: 0x00 00 00 04 (a) 

Теперь предположим, что у вас также есть указатель на a:

int a = 4; 
int* p = &a; 

Ваша память будет выглядеть так:

0x12 34 56 78: 0x00 00 00 04 (a) 
0x12 34 56 7c: 0x12 34 56 78 (p) 

Теперь предположим, что у вас есть указатель на p:

int a = 4; 
int* p = &a; 
int** q = &p; 

Ваша память будет выглядеть:

0x12 34 56 78: 0x00 00 00 04 (a) 
0x12 34 56 7c: 0x12 34 56 78 (p) 
0x12 34 56 80: 0x12 34 56 7c (q) 

Вы можете получить от q до p к a следуя адреса. Указатели - это слой косвенности: они указывают, где что-то, а не то, что есть.

Смежные вопросы