Информатика и технология программирования

         

Явное преобразование типа указателя " на лету"


Рассмотрим три операции присваивания:


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* ).



Содержание раздела