У меня есть случай, в котором у меня есть uint64_t*
, а char*
(6 символов длиной), а также uint16_t*
, что указывают на адреса x
, x+2
и x
соответственно. Поэтому, если char * указывает на «This i», тогда uint16_t*
должен указывать на значение 0
dec, а uint64_t*
должен указывать на значение 115, 588, 096, 157, 780
dec.Перекрытие Указатели
Но когда я смотрю на эти значения, я получаю 0 деци для uint64_t
. Я не понимаю, почему это было бы. Может ли кто-нибудь объяснить?
Edit (добавлен код):
FILE *file = fopen("/Users/Justin/Desktop/test.txt", "rb");
uint64_t *window = malloc(8);
char *buffer = (char*)(window+2);
uint16_t *data = (uint16_t*)window;
uint16_t *read = (uint16_t*)(window+6);
fread(buffer, 6, 1, file);
printf("%p\n", window);
printf("%p\n", buffer);
printf("%p\n", data);
printf("%p\n", read);
printf("%s\n", buffer);
printf("%llu\n", *window);
и выход:
0x100105440
0x100105450
0x100105440
0x100105470
This i
0
Являются ли ваши символы в ASCII или другом символе UTF. Например, все символы ASCII имеют десятичные значения от 0 до 127; и 588 выходит за пределы диапазона. –
ASCII-символы – JDOdle
Код в 'c'. Почему вопрос помечен 'C++'? – user2079303