C указатели и физический адрес - PullRequest
6 голосов
/ 17 февраля 2011

Я только начинаю C. Я читал об указателях в различных книгах / уроках, и я понимаю основы.Но одна вещь, которую я не видел, объяснила, что это за числа.

Например:

int main(){
   int anumber = 10;
   int *apointer;

   apointer = &anumber;

   printf("%i", &apointer);
   }

может возвращать число типа 4231168. Что представляет собой это число?Это какое-то обозначение памяти в ОЗУ?

Ответы [ 11 ]

0 голосов
/ 17 февраля 2011

Да, именно так - это адрес данных апоинтера в памяти. Локальные переменные, такие как anumber и apointer, будут размещены в стеке вашей программы, поэтому они будут ссылаться на адрес в кадре функции main () в стеке.

Если бы вы выделили память с помощью malloc (), вместо этого это указывало бы на позицию в куче вашей программы. Если это была фиксированная строка, она может ссылаться на местоположение в сегментах данных вашей программы или родата (данные только для чтения).

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