Как распределяются переменные указателя в памяти? Распределение памяти зависит от типа данных? - PullRequest
0 голосов
/ 18 мая 2011
void main
{ 
 int a,*b;

 a=10;

 a=&b;

 printf("value of a %d",a);

 printf("value of b %d",b);

}

Как переменные указателя распределяются в памяти?Распределение памяти зависит от типа данных?

Ответы [ 4 ]

4 голосов
/ 18 мая 2011

Они расположены так же, как (например) целые числа. И то, на что они указывают, никак не влияет на это.

2 голосов
/ 18 мая 2011

Этот конкретный указатель размещается в стеке, потому что это автоматическая переменная.Это ничем не отличается от «обычной» переменной без указателя.Если под «распределением памяти» вы подразумеваете размер выделения, то да, размер указателя может зависеть от типа указателя .

. Вы можетеузнать размер указателя с помощью sizeof.В этом случае b занимает sizeof(int *) байт, что зависит от платформы (обычно 4 или 8 байт на современных машинах).

Вы можете выделить указатель на свободное хранилище (кучу), если хотите:

int **pp = malloc(sizeof(int *));  // allocates space for a single pointer

(Обратите внимание, что ваш пример программы ошибочен: a=&b должно быть b=&a.)

0 голосов
/ 18 мая 2011
Указатель

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

0 голосов
/ 18 мая 2011

Автоматическое распределение заканчивается в стеке . Динамическое распределение заканчивается на куче . Неважно, какой это тип данных.

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