Работа с графиками MatLab (2D)

Билет 11.

11.1 Указатели. Использование динамической памяти (С/С++)

Указатели.

• указатель – это переменная, в которой записан адрес другой переменной;

• при объявлении указателя надо указать тип переменных, на которых он будет указывать, а перед именем поставить знак *;

• знак & перед именем переменной обозначает ее адрес;

• знак * перед указателем в рабочей части программы (не в объявлении) обозначает значение ячейки, на которую указывает указатель;

• нельзя записывать по указателю, который указывает непонятно куда – это вызывает сбой программы, поскольку что-то стирается в памяти;

• для обозначения недействительного указателя используется константа NULL; pC = NULL;

• при изменении значения указателя на n он в самом деле сдвигается к n-ому следующему числу данного типа, то есть для указателей на целые числа на n*sizeof(int) байт;

• указатель печатаются по формату %p.

Операция косвенной адресации *

Когда за знаком * следует указатель на переменную, результатом операции является величина, помещенная в ячейку с указанным адресом.

 

int i,k, *pin;

printf("i=");

scanf("%d",&i);

pin=&i;

k=*pin;

printf("k=%d\n",k);

getch();

system("cls");

Операция присвоения указателей.

• Указателю можно присвоить значение указателя того же типа или типа void. В последнем случае требуется использовать приведение к типу. Указателю на тип void может быть присвоен указатель любого типа. Тогда также требуется использовать приведение к типу.

int *ip,*pin, nurse;

void *pv;

double *pd;

pin=&nurse;

ip=pin;

pv=(void *) ip;

pd=(double*) pv;

/* В итоге, указатель на double ссылается на то же место, что и указатель на int. */

Массивы и указатели

Динамическое выделение памяти

Для запроса памяти, чтобы размещать переменные в языке Си можно использовать две стандартные функции malloc() и calloc().

Аргументом функции malloc() является количество запрашиваемой памяти в байтах. Функция возвращает значение адреса начала выделенной области памяти, если выделение памяти произошло успешно, и NULL – если произошла ошибка.

Аргументами функции calloc() являются две целые неотрицательные величины: размер блока памяти в байтах size и количество запрашиваемых блоков памяти n. Функция возвращает значение адреса начала выделенной области памяти, если выделение памяти произошло успешно, и NULL – если произошла ошибка. Для освобождения запрошенной памяти используется функция free().

Пример

       
   
 
 


Работа с графиками MatLab (2D)

Смотри билет №10

Билет №12


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



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