Диапазон в переменной указателя в C - PullRequest
0 голосов
/ 29 августа 2018

У меня есть основной вопрос, Как C говорит, что символ объекта будет 1 байт поэтому в случае неподписанного символа диапазон составляет от 0 до 255

Но в случае указателя на символ как 1-байтовая переменная может хранить более 255 ??

как в приведенной ниже программе в качестве иллюстрации я нахожу символьный указатель р хранить значение 2358855> 255 ??

(откуда я знаю значение 2358855 - это адрес, но как в 1-байтовом объекте может храниться больше 255) ??

Может ли кто-нибудь помочь в этом ?? enter image description here

Ответы [ 2 ]

0 голосов
/ 29 августа 2018

Указатель на тип не связан ограничениями размера самого типа.

Простое доказательство:

if(sizeof(char *)==sizeof(char))
{
     printf("I\'ll never get anything done like this.\n");
}
else
{
     printf("Life is good!\n");
}
0 голосов
/ 29 августа 2018

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

Указатель на char был бы бесполезен, если бы он мог содержать только 256 значений. Это означало бы, что можно адресовать только 256 байтов символов.

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