double d = 1.1;
double *p = &d;
cout << *p;
int i = 1;
int * q = &i;
cout << *q;
В приведенном выше коде, когда мы разыменования указателя p
(соиЬ < < * р;), как же компилятор знает размер *p
? Я имею в виду, если размер double равен 8, а адрес d
начинается с 1000, как компилятор знает, что он должен принимать данные от 1000 до 1007, тогда как для *q
это должно занять 4 байта?
как же компилятор знает тип указателя
Поскольку размеры p
и q
- все 4, я не знаю, как компилятор получает информацию о типе из указателя.
Вы сказали это тип, когда вы указали указатель. – chris
'double * p' является указателем на' double', размер которого известен. Не путайте размер указателя с размером того типа, на который он указывает. –