С указателями Вопрос - PullRequest
8 голосов
/ 10 июля 2009

Для:

int *a;

a - это адрес, где может храниться целое число. &a - это адрес, где хранится. Тогда где хранится &a? И где хранится &(&a)? И где хранится &(&(&a))? Где останавливается это хранение адресов?

Ответы [ 14 ]

0 голосов
/ 10 июля 2009

int * a; это указатель на int с именем 'a'. & А; разыменование int * a. это указывает на себя. это то, что вы использовали бы, чтобы указать на переменную, которую вы хотели бы передать от функции к функции. разыменование - это просто модное слово для «возврата адреса» & (& (& a)) не является допустимым выражением, как указано ранее. Вы можете сделать указатель на указатель на указатель. Это может быть то, что вы думаете. В таком случае вы бы разыменовывали последний рассматриваемый указатель, и компьютер должен понимать, о чем вы говорите.

Чтобы ответить на вопрос «где находится»? в стеке.

пожалуйста, если я ошибаюсь, дайте мне знать.

0 голосов
/ 10 июля 2009

Вы можете иметь указатель на указатель.

Ex:

void foo(int **blah)
{
 int *a = *blah;

 ...
}

Указатель занимает память. Это просто маленький контейнер, который содержит адрес чего-либо. Он просто не может занимать «без пробела», потому что все в компьютере как-то представлено числами. Просто, если речь идет о C / C ++, int * a является просто указателем на объект и не занимает места. Это означает, что вам не нужно управлять какой-либо памятью ... она защищает компьютер от кода.

0 голосов
/ 10 июля 2009

Не совсем. a - это переменная, в которой может храниться адрес некоторого целого числа. &a - это адрес a, т.е. е. адрес переменной a, которая может содержать адрес некоторого целого числа.

Очень важно: до тех пор, пока a не назначен адрес чего-либо, это неинициализированный указатель. Попытка использовать все, на что он указывает, приведет к непредсказуемым результатам и, скорее всего, приведет к краху вашей программы.

0 голосов
/ 10 июля 2009

a - это переменная типа "address of int"; & a - адрес переменной a; & (& a) будет адресом адреса переменной a, который не имеет смысла

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...