Сравнение указателей

Можно сравнивать два указателя, если они указывают на один и тот же объект. Если же они указывают на разные объекты, то их можно проверить только на несовпадение.

Пример сравнения на неравенство указателей.

#include <stdio.h>

int main()

{

int a,b;

int *p1, *p2;

p1=&a;

p2=&b; // Указатели p1 и p2 не равны, так как они указывают на

// разные объекты

if (p1!= p2) printf (“Указатели p1 и p2 не равны \n”);

else printf(“Эта строка не напечатается \n”);

return 0;

}

Операция new

Условно можно разделить всю память на 2 вида: автоматически распределяемую при работе программы (например, при объявлении переменной int a[10]; автоматически выделяется 10 ячеек памяти, каждая из которых предназначена для хранения целого значения) и свободную или динамически распределяемую. Доступ к ячейкам свободной памяти осуществляется посредством указателя, хранящего адрес нужной ячейки. Для выделения памяти в области динамического распределения используется ключевое слово new. Формат для выделения переменной

new имя_ типа;

Например, new int; выделит два байта памяти, а new long; четыре байта. В качестве результата оператор new возвращает адрес выделенного фрагмента памяти. Этот адрес должен присваиваться указателю.

Примеры.

unsigned short int *ps;

ps = new unsigned short int;

Теперь ps указывает на ячейку памяти, достаточную для хранения значения типа unsigned short int, и туда можно занести какое-нибудь значение: *ps = 72;

float *pa;


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



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