#include char buffer[4]="AAA"; //char buffer[4]={'A','A','A','A'}; void main() { printf("0x%02X\n", *buffer); // (1) не правильно! printf("0x%02X\n", (char *) *buffer); // (2) правильно } Если массив buffer представляет собой char-элементы, то при обращении к нему, как показано в строке (1), компилятор сгенерирует не тот код, что нам нужно. При этом, никакой ошибки выдано не будет. Для того, чтобы компилятор сгенери- ровал правильный код, к отдельному элементу char-массива нужно обращаться так, как это сделано в строке (2), принудительно указав компилятору через cast- операцию то, что нам нужно. При обращении к массиву, состоящему из int-элементов, вышеописанных проблем не возникает, компилятор генерирует правильный код. Для более наглядного представления, о чем идет речь, можно просмотреть asm- листинг, генерируемый компилятором для приведенного выше примера. Для строки (1) компилятор не сгенерирует код "ld b,0".