Что означает приведение в char *
при работе с адресами?
Вообразите этот простой пример
int x = 12;
char * z = (char *)&x;
И предположим, что архитектура int
имеет длину 4 байта. Из стандарта C ++ sizeof(char)==1
.
По выражению char * z
части char *
можно сказать, что оно используется для арифметики указателей
Во второй строке примера, который я привел, получается, что z
теперь указывает на первое (из 4 байтов), которое имеет x
. Выполнение ++z;
сделает z
указателем на второй байт (в моем примере) 4 байта int
Можно сказать, что левая часть объявления используется для арифметики указателей, чтобы упростить вещи. ++(char *)
переместит вас на один байт, а ++(int *)
переместит вас на соответствующее количество байтов int
занимает в памяти.