Существует только один стандарт для C (один от ISO), с двумя версиями (1989 и 1999), плюс несколько довольно незначительных изменений.Все версии и редакции согласны со следующим:
- вся память данных адресуется байтами, а символы являются байтами
- , таким образом
char*
сможет обращаться к любым данным void*
совпадает с char*
, за исключением того, что для преобразования в него и из него не требуется приведение типов
- преобразование из
int*
в char*
всегда работает, так какдействительно ли преобразование обратно в int*
- преобразование произвольного
char*
в int*
не гарантированно работает
Причины, по которым указатели на символы гарантированно работают так, чтоВы можете, например, копировать целые числа из любой точки памяти в другое место в памяти или на диск и обратно, что оказывается довольно полезным делом в низкоуровневом программировании, например, в графических библиотеках.