Явное преобразование типа указателя " на лету"
Рассмотрим три операции присваивания:
char *p, A[20];
int *q; p = A;
q = (int*)p; p[2] = 5; // 1
(q = ( int*)p) [2] = 5; // 2
((int *)p )[2] = 5; // 3
// p - тип указателя char* до преобразования
// (int*) - явное преобразование указателя
// на байт в указатель на целое
// (int*)p -тип указателя int* после преобразования
Все они дают одинаковый результат -записывают целое 5 во второе слово области памяти, определенной как массив байтов (символов) с именем A. Однако, если в первом и втором случае используется промежуточный указатель типа int*, то в последнем случае такой указатель создается как рабочая переменная, которая получает тип int* и значение переменной p . Такая операция называется явным преобразованием типа указателя. В скобках указывается абстрактный тип данных - указатель на требуемый тип (например, int* ).