Языки программирования для численных методов. Глушакова Т.Н - 57 стр.

UptoLike

57
которое и необходимо использовать для присвоения и
сравнения нулевого указателя. Например:
#include <stdio.h>
:
int*p=NULL; /*p вначале не указывает никуда*/
:
if (p!=NULL) /*если p куда- то уже указывает, то его можно
использовать */
:
Как известно, хранящиеся в физической памяти компьютера
единицы и нули, расположенные в одной и той же ячейке памяти, могут
трактоваться по-разному: как int, как float, как char. Указатели
соответствующих типов можно установить на один и тот же адрес, после
чего разыменование данного указателя позволяет обратиться к ячейке
памяти как к значению соответствующего типа. Указатели разных типов
можно присваивать друг другу, однако для этого необходимо явное
приведение типа, например:
int i;
int*pi;
float*pf;
:
pi = & i;
pf = (float*) pi;
*pf = 3.14;
Теперь значение 3.14 в двоичном виде будет занесено в ячейки
памяти, занимаемые переменной i.
В языке С есть еще один тип указателя void*. Фактически, это не
типизированный указатель. Для указателя типа void* нельзя использовать
операцию разыменования для чтения или присвоения значения , так как тип
этого значения неизвестен. Зато , указатель void* можно присваивать
указателю на любой тип и наоборот безо всяких операций преобразования
типов. Void* можно использовать для промежуточного хранения указателя
любого типа.
Указатели чаще всего используются:
                                     57
которое      и       необходимо         использовать для присвоения и
сравнения нулевого указателя. Например:
     #include 
     :
     int*p=NULL; /*p вначале не указывает никуда*/
     :
      if (p!=NULL) /*если p куда-то уже указывает, то его можно
                                   использовать*/
      :
      Как известно, хранящиеся в физической памяти компьютера
единицы и нули, расположенные в одной и той же ячейке памяти, могут
трактоваться по-разному: как int, как float, как char. Указатели
соответствующих типов можно установить на один и тот же адрес, после
чего разыменование данного указателя позволяет обратиться к ячейке
памяти как к значению соответствующего типа. Указатели разных типов
можно присваивать друг другу, однако для этого необходимо явное
приведение типа, например:
      int i;
      int*pi;
      float*pf;
      :
      pi = & i;
      pf = (float*) pi;
      *pf = 3.14;
      Теперь значение 3.14 в двоичном виде будет занесено в ячейки
памяти, занимаемые переменной i.
      В языке С есть еще один тип указателя – void*. Фактически, это не
типизированный указатель. Для указателя типа void* нельзя использовать
операцию разыменования для чтения или присвоения значения, так как тип
этого значения неизвестен. Зато, указатель void* можно присваивать
указателю на любой тип и наоборот безо всяких операций преобразования
типов. Void* можно использовать для промежуточного хранения указателя
любого типа.
      Указатели чаще всего используются: