ВУЗ:
Составители:
Рубрика:
72
Преобразование типа указателя
Указатель на один тип данных путем преобразования можно
рассматривать как указатель на другой тип данных. Обычно подобное
преобразование выполняют для указателей, имеющих тип void *, но
разрешено выполнять преобразование и для указателей других типов.
Пример. Выделение памяти функцией malloc(). Эта функция
возвращает значение типа void *, в приведенном коде выполнено
преобразование к типу int *.
int * p;
p = (int *) malloc(sizeof(int)); /* Выделение памяти
для целого. */
Пример. Как не стоит делать преобразование типа. Указателю p на
int присвоено значение указателя px на double и выполнено необходимое
преобразование типа. В результате, обе переменные px и p имеют
одинаковые значения, но ссылаются на разные данные, – первый указатель
ссылается на блок памяти, занятый значением типа double, а указатель p
ссылается только на первые 4 байта этого блока.
double x=3.1415; double *px;
px = &x;
int *p;
p=(int *)px;
cout<<"\n px="<<px<<" p="<<p;
cout<<"\n *px="<<*px<<" *p="<<*p;
Указатели и массивы
Имя массива является указателем и содержит адрес первого элемента
массива. Если, например, w имя массива, то *w – значение первого
элемента массива, а обращение w[i] к i-му элементу массива есть
Преобразование типа указателя
Указатель на один тип данных путем преобразования можно
рассматривать как указатель на другой тип данных. Обычно подобное
преобразование выполняют для указателей, имеющих тип void *, но
разрешено выполнять преобразование и для указателей других типов.
Пример. Выделение памяти функцией malloc(). Эта функция
возвращает значение типа void *, в приведенном коде выполнено
преобразование к типу int *.
int * p;
p = (int *) malloc(sizeof(int)); /* Выделение памяти
для целого. */
Пример. Как не стоит делать преобразование типа. Указателю p на
int присвоено значение указателя px на double и выполнено необходимое
преобразование типа. В результате, обе переменные px и p имеют
одинаковые значения, но ссылаются на разные данные, – первый указатель
ссылается на блок памяти, занятый значением типа double, а указатель p
ссылается только на первые 4 байта этого блока.
double x=3.1415; double *px;
px = &x;
int *p;
p=(int *)px;
cout<<"\n px="<Страницы
- « первая
- ‹ предыдущая
- …
- 70
- 71
- 72
- 73
- 74
- …
- следующая ›
- последняя »
