Указатели и то, как компилятор различает указатели и нормальные переменные - PullRequest
0 голосов
/ 02 октября 2018
int a=10;
int *p=&a;

Хорошо, здесь p указывает на a;У p также есть адрес, и в этом адресе сохраняется адрес a (если я прав).

Итак, a: (некоторый адрес): 10 p: (некоторый адрес): адрес a

Теперь я знаю, как работают указатели;Я просто хочу знать, что компиляторы различают указатели и нормальные переменные?(кажется глупым вопросом, но да)

Ответы [ 2 ]

0 голосов
/ 03 октября 2018

Во время компиляции компилятор принимает к сведению объявления переменных и ищет типы данных определенных переменных.Следовательно, после просмотра объявления

int a = 10;
int* p = &a;

компилятор знает типы данных переменных (но все еще не знает значений).

Во время выполнения компилятору необходимо выделить память(что, очевидно, не то же самое для 'int' и 'int *') для переменных, так что значения могут быть сохранены.Следовательно, компилятор должен знать типы данных.

Таким же образом компилятор работает с различными типами данных.

0 голосов
/ 02 октября 2018

Я думаю, что это просто вопрос типа данных.int* - это тип, отличный от int, за исключением того, что я думаю, что они похожи на любую другую переменную.Как то, как компилятор различает char и int.

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