Инициализация указателей. При определении указателя целесообразно выполнить его инициализацию, то есть присвоение начального значения

 

При определении указателя целесообразно выполнить его инициализацию, то есть присвоение начального значения. Использование в программах неинициализированных указателей приводит к ошибкам. Инициализатор записывается после имени указателя в двух формах:

 

тип *имя_указателя = инициализирующее_выражение;

тип *имя_указателя (инициализирующее_выражение);

 

Например,

 

// a,c – указатели на int, b – переменная типа int

int *a(NULL), b = 7, *c = &b; // & - операция

// получения адреса

 

NULL – стандартная константа (определена в stdio.h как 0), характеризующая неопределённое значение указателя. Адреса в памяти с нулевым значением не существует.

Для доступа к участку памяти, связанному с указателем, к переменной-указателю применяется унарная операция «*» кос­венной адресации, иначе называемая операцией разыменования (разадресации) или операцией раскрытия ссылки или обращения по адресу (операндом всегда является указатель):

 

*c = 11; // b также становится равной 11

 

Различают указатели-переменные и указатели-константы:

 

int i; // Целочисленная переменная

const int ci = 100; // Целочисленная константа

 

// Указатель на целочисленную переменную

int *pi = &i;

// Указатель на целочисленную константу

const int * pci = &ci;

 

// Указатель-константа на целочисленную переменную

int * const cp = &i;

 

// Указатель-константа на целочисленную константу

const int * const cpc = &ci;

 
 

 

 


Указатель на void может ссылаться на объект любого типа, его можно сравнивать с любым указателем, но к нему нельзя применять операцию разыменования «*» (требуется предварительно преобразовать его к указателю на конкретный тип данных):

 

void * ptr;

ptr = a;

int * c = (int*)ptr;

 

Указатели подчиняются общим правилам определения области действия, видимости и времени жизни переменных.

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: