Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






Функции по работе с датой и временем.




Функция приостановки времени на заданный интервал

Функция delay предназначена для приостановки времени на заданный интервал

времени (в миллисекундах)

#include <dos.h>

void delay(unsigned);

Функция получения системного времени

Функция time предназначена для получения системного времени (в сек с 00.00.00 01 янв 1970 г)

#include <time.h>

time_t time(time_t*);

(time_t – тип данных, определённый в файле time.h оператором typedef long time_t)

аргумент – указатель, которому будет присвоено значение. При нулевом указателе NULL значение не присваивается.

 

Функция определения разницы во времени между двумя событиями.

Функция difftime Вычисляет разницу во времени между двумя событиями.

 

Синтаксис #include<time.h>

double difftime(time_t time2, time_t time1);

Прототип в time.h

Примечания Вычисляет время в секундах, прошедшее от time1 до time2.

Значение Типа double.

Переносимость Эта функция доступна в системах UNIX и опреде-

лена в ANSI C.

См. также asctime, ctime, daylight(глобальная переменная), gmtime, localtime, time, timezone(глобальная переменная)

Пример #include <time.h>

#include <stdio.h>

#include <dos.h>

#include <conio.h>

int main(void)

{ time_t first, second;

clrscr();

first = time(NULL); /* системное время */

delay(2000); /* ожидает 2 секунды */

second = time(NULL);

printf("The difference is: %f seconds\n",

difftime(second,first));

getch();

}

 

Функция помещения текущего времени в структуру timeb.

Функция ftime помещает текущее время в структуру timeb.

 

Синтаксис #include <sys\timeb.h>

void ftime(struct timeb *buf);

Прототип в sys\timeb.h

Примечания Определяет текущее время и заполняет поля труктуры timeb, указываемой посредством buf. timeb содержит 4 поля: time, millitm, timezone

и dstflag:

struct timeb {

long time;

short millitm;

short timezone;

short dstflag;

};

- time - время в секундах с 00:00:00 1 января 1970 года по Гринвичу (GMT).

- millitm - миллисекунды.

- timezone - разница в минутах между GMT и местным временем; возрастает в западном направлении. ftime получает это поле из глобальной

переменной timezone, которая устанавливается tzset.

- dstflag используется для указания необходимости учета летнего времени.

Внимание!!! Функция ftime вызывает tzset. Поэтому нет необходимости вызывать tzset явно, когда Вы используете ftime.

Значение Нет. Переносимость Эта функция доступна в системах UNIX System 5.

См. также asctime, ctime, gmtime, localtime, stime, time, Tzset

DOS имеет специальную область памяти, называемую окружением (environment), в которой хранится набор строк символов, которые могут использоваться программами (например, о режиме работы программы, где искать временные файлы и т.д.)

Пример #include <stdio.h>

#include <stdlib.h>

#include <time.h>

#include <sys\timeb.h>

/* стандартное тихоокеанское время

с учетом летнего времени */

char *tzstr = "TZ=PST8PDT";

main(void)

{ struct timeb t;

putenv(tzstr);

tzset();

ftime(&t);

printf("Seconds since 1/1/1970 GMT: %ld\n", t.time);

printf("Thousandths of a second: %d\n", t.millltm);

printf("Difference between local time and GMT: %d\n", t.timezone);

printf("Daylight savings in effect (1) not (0): %d\n", t.dstflag);

}

Функция определения времени процессора.

Функция clock определяет время процессора.

 

Синтаксис #include<time.h>

clock_t clock(void);

Прототип в time.h

Примечания Может быть использована для определения временного интервала между двумя событиями. Для определения времени в секундах, значение, возвращаемое clock, следует разделить на значение макро CLK_TCK.

Значение Возвращает время процессора, прошедшее с начала

работы программы. Если это значение недоступно или не может быть представлено, будет возвращено значение -1.

Переносимость Эта функция совместима с ANSI C.

См. также time

Пример #include <time.h>

#include <stdio.h>

#include <dos.h>

main(void)

{

clock_t start, end;

start = clock();

delay(2000);

end = clock();

printf("The time was: %f\n", (end - start) / CLK_TCK);

}

 

 

Функция преобразования даты и времени в символьную строку.

 

Функция ctime Преобразует дату и время в строку.

Синтаксис #include<time.h>

char *ctime(const time_t *time);

Прототип в time.h

Примечания Преобразует значение, указываемое time (в виде,

возвращаемом функцией time), в 26-символьную строку в следующем форме, завершенной символом новой строки и нуль-символом:

Mon Nov 21 11:31:54 1983\n\0

Все поля имеют постоянную ширину. Установите глобальную переменную timezone в значение разности в секундах между GMT (гринвичское время) и местным временем (для PST - тихоокеанского поясного времени - timezone = 8

* 60 * 60). Глобальная переменная daylight ненулевая, если и только если должен применяться стандарт США для преобразования в летнее время.

Значение Указатель на символьную строку, содержащую дату и время. Возвращаемое значение указывает на статическую строку, которая перезаписывается при каждым новом вызове ctime.

Переносимость Эта функция доступна в системах UNIX и определена в ANSI C.

См. также asctime, daylight(глобальная переменная), diftime, ftime, getdate, gmtime, localtime, settime, timezone(глобальная переменная), tzset

Пример #include <stdio.h>

#include <time.h>

main(void)

{ time_t t;

t = time(NULL);

printf("Today's date and time: %s\n", ctime(&t));

}

 

Функция получения системной даты и времени.

 

Функция getdate получает системную дату.

Синтаксис #include <dos.h>

void getdate(struct date *datep);

Прототип в dos.h

Примечания Помещает в структуру типа date текущую системную дату;

datep - указатель на эту структуру. Структура date определена следующим образом:

struct date {

int da_year; /* год */

char da_day; /* день месяца */

char da_mon; /* месяц (1 = январь) */

};

Значение Нет.

Переносимость Эта функция доступна только в DOS.

См. также ctime, gettime, setdate, settime

Пример #include <dos.h>

#include <stdio.h>

main(void)

{ struct date d;

getdate(&d);

printf("The current year is: %d\n", d.da_year);

printf("The current day is: %d\n", d.da_day);

printf("The current month is: %d\n", d.da_mon);

}

 

Функция преобразования значения даты и времени в структуру tm

 

Функция localtime Преобразует значения даты и времени в структуру

Синтаксис #include <tume.h>

struct tm *localtime(const time_t *timer);

Прототип в time.h

Замечание localtime принимает адрес значения, возвращаемого функцией time, и возвращает указатель на структуру типа tm, содержащую разнесенное по отдельным полям значение времени и даты. Она корректирует эти значения с учетом часового пояса и, возможно, режима летнего времени.

Глобальная переменная timezone (типа long) должна быть установлена в значение разности в секундах между временем по Гринвичу (GMT) и местным временем (для Тихоокеанского Стандартного Времени - PST - значение timezone равно 8x60x60). Глобальной переменной daylight должно быть присвоено ненулевое значение ТОЛЬКО в случае, если применяется стандарт США режима летнего времени.

Структура tm описана в time.h следующим образом:

struct tm {

int tm_sec;

int tm_min;

int tm_hour;

int tm_mday;

int tm_mon;

int tm_year;

int tm_wday;

int tm_yday;

int tm_isdst;

};

Эти величины определяют время в 24-часовом исчислении, день месяца (от 1 до 31), месяц (от 0 до 11), день недели (воскресенью соответствует 0), (год - 1900), день года (от 0 до 365) и флаг, который отличен от нуля, если действует режим летнего времени.

Значение localtime возвращает указатель на структуру, содержащую разнесенное по отдельным полям значение времени и даты. Эта структура является статическим объектом, т.е. перезаписывается при каждом вызове.

Переносимость Эта функция доступна в системах UNIX и совместима с ANSI C.

См.также asctime, ctime, ftime, gmtime, stime, time, tzset

Пример #include <time.h>

#include <stdio.h>

#include <dos.h>

main(void)

{

time_t timer;

struct tm *tblock;

/* получает время суток */

timer = time(NULL);

/* переводит дату и время в структуру */

tblock = localtime(&timer);

printf("Local time is: %s",asctime(tblock));

}

Получение дескриптора файла (целое число, порядковый номер потока в числе открытых программой потоков)

int fileno(FILE*);

 

Функция получения дату и время модификации файла.

 

Функция getftime получает дату и время модификации файла.

Синтаксис #include <io.h>

int getftime(int handle, struct ftime *ftimep);

Прототип в io.h

Примечания getftime извлекает время и дату модификации файла на диске, открытого с обработчиком handle. ftimep - указатель на структуру ftime, в которую помещается полученная информация. Структура ftime определена следующим образом:

struct ftime {

unsigned ft_tsec: 5; /* пары секунд */

unsigned ft_min: 6; /* минуты */

unsigned ft_hour: 5; /* часы */

unsigned ft_day: 5; /* дни */

unsigned ft_month: 4; /* месяцы */

unsigned ft_year: 7; /* год - 1980 */

};

Значение При успешном завершении возвращается 0. В случае ошибки возвращается -1, и глобальная переменная errno устанавливается в одно из следующих значений:

EINVFNC Неверный номер функции

EBADF Неверный номер (обработчика) файла

Переносимость Эта функция доступна только в DOS.

См. также open, setftime

Пример #include <stdio.h>

#include <io.h>

main(void)

{ FILE *stream;

struct ftime ft;

if ((stream = fopen("TEST.$$$",

"wt")) == NULL)

{ fprintf(stderr, "Cannot open output file.\n");

return 1;

}

getftime(fileno(stream), &ft);

printf("File time: %02u:%02u:%02u\n", ft.ft_hour, ft.ft_min, ft.ft_tsec / 2);

printf("File date: %02u/%02u/%04u\n", ft.ft_month, ft.ft_day,ft.ft_year + 1980);

fclose(stream); return 0;

}

 

Функция получения системное время.

 

Функция gettime получает системное время.

Синтаксис #include <dos.h>

void gettime(struct time *timep);

Прототип в dos.h

Примечания gettime помещает текущее системное время в

структуру типа time; timep - указатель на эту

структуру.

Структура time определена следующим образом:

struct time {

unsigned char ti_min; /*минуты*/

unsigned char ti_hour; /*часы*/

unsigned char ti_hund; /*сотые доли секунды*/

unsigned char ti_sec; /*секунды*/

};

Значение Нет.

Переносимость Эта функция доступна только в DOS.

См. также getdate, setdate, settime, stime, time

Пример #include <stdio.h>

#include <dos.h>

main(void)

{ struct time t;

gettime(&t);

printf("The current time is: %2d:%02d:%02d.%02d\n", t.ti_hour, t.ti_min, t.ti_sec, t.ti_hund); }

 

Функция перевода даты и времени в значение по Гринвичу.

 

Функция gmtime переводит дату и время в значение по Гринвичу (GMT).

Синтаксис #include <time.h>

struct tm *gmtime(const time_t *timer);

Прототип в time.h

Примечания gmtime принимает адрес значения, полученного с помощью функции time, и возвращает указатель на структуру tm, содержащую разнесенное по отдельным полям значение времени, переведенное непосредственно в GMT.

Глобальная переменная timezone должна содержать разность в секундах между временем по Гринвичу (GMT) и местным поясным временем (для Тихоокеанского Стандартного времени, PST, timezone = 8 * 60 * 60).

Глобальная переменная daylight должна иметь ненулевое значение ТОЛЬКО В ТОМ СЛУЧАЕ, если должен применяться американский стандарт летнего времени.

Структура tm определена в time.h следующим образом:

struct tm {

int tm_sec;

int tm_min;

int tm_hour;

int tm_mday;

int tm_mon;

int tm_year;

int tm_wday;

int tm_yday;

int tm_isdst;

};

Эти величины дают: время в 24-часовом исчислении, день месяца от 1 до 31, месяц от 0 до 11, день недели (воскресенью соответствует 0), (год - 1900), день года от 0 до 365 и флаг, который не равен 0, если действует летнее время.

Значение gmtime возвращает указатель на структуру tm, содержащую разнесенное по отдельным полям значение времени. Эта структура - статический объект, поэтому она перезаписывается при каждом вызове.

Переносимость Эта функция доступна в системах UNIX и определена в ANSI C.

См. также asctime, ctime, ftime, localtime, stime, time, tzset

Пример #include <stdio.h>

#include <stdlib.h>

#include <time.h>

#include <dos.h>

/* Тихоокеанское Стандартное время с режимом летнего времени */

char *tzstr = "TZ=PST8PDT";

int main(void)

{ time_t t;

struct tm *gmt, *area;

putenv(tzstr);

tzset();

t = time(NULL);

area = localtime(&t);

printf("Local time is: %s", asctime(area));

gmt = gmtime(&t);

printf("GMT is: %s", asctime(gmt));

}

 

Функция установки даты и времени создания / модификации файла.

Функция setftime Устанавливает дату и время создания / модификации файла.

Синтаксис #include <io.h>

int setftime(int handle, struct ftime *ftimep);

Прототип в io.h

Примечания setftime устанавливает дату и время создания / модификации файла, связанного с handle, в значения, содержащиеся в структуре ftime, на которую указывает ftimep.

Структура ftime определена следующим образом:

struct ftime {

unsigned ft_tsec: 5; /* пары секунд */

unsigned ft_min: 6; /* минуты */

unsigned ft_hour: 5; /* часы */

unsigned ft_day: 5; /* дни */

unsigned ft_month: 4; /* месяцы */

unsigned ft_year: 7; /* год - 1980 */

};

Значение setftime возвращает 0 в случае успешного завершения. В случае ошибки возвращается -1 и глобальная переменная errno устанавливается в одно из следующих значений:

EINVFNC Неверный номер функции

EBADF Неверный номер файла

Переносимость Эта функция доступна только в DOS.

См. также gettime

Пример #include <stdio.h>

#include <process.h>

#include <fcntl.h>

#include <io.h>

int main(void)

{

struct ftime filet; FILE *fp;

if ((fp = fopen("TEST.$$$", "w")) == NULL) {

perror("Error:");

exit(1);

}

fprintf(fp, "testing...\n");

/* загрузить в структуру ftime новое время и дату */

filet.ft_tsec = 1;

filet.ft_min = 1;

filet.ft_hour = 1;

filet.ft_day = 1;

filet.ft_month = 1;

filet.ft_year = 21;

/* показать время и дату в текущем справочнике */

system("dir TEST.$$$");

/* изменить время и дату */

setftime(fileno(fp), &filet);

system("dir TEST.$$$");

/* закрыть и удалить временный файл */

fclose(fp);

unlink("TEST.$$$");

return 0;

}

Структуры.

 

В отличие от массивов, все элементы которых должны быть одного типа, структуры объединяют в одной переменной элементы разных типов.

Структура может быть представлена как некоторый набор разнотипных и/или однотипных данных, совокупность которых рассматривается как совершенно новый, пользовательский тип данных. Структура

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

Существует два формата представления структуры:

Формат 1

struct [ имя-тега ]

{ список-объявлений-элементов }[ описатель [, описатель ]…];

Формат 2

struct имя-тега описатель [ описатель [, описатель ]…;

 

Объявление структуры задаёт имя структурной переменной и последовательность переменных величин, называемых элементами структуры, которые могут иметь различные типы. Переменная этого структурного типа содержит целую последовательность величин, определяемую этим типом.

В формате 1 список-объявлений-элементов задаёт типы и имена элементов структуры. Имя-типа-структуры – это идентификатор, который именует тип структуры, определяемый списком объявлений элементов.

В формате 2 используется имя типа структуры для ссылки на тип структуры, определённый где-то в другом месте в области видимости и называемый шаблоном структуры. Поэтому список объявлений элементов в этом формате отсутствует.

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

Указатель рассматривается как указатель на структуру, массив – как массив структур, функция – как функция, возвращающая структуру.

Список-объявлений-элементов содержит одно или насколько объявлений переменных или полей-битов. Каждая переменная, объявленная в этом списке, называется элементом структурного типа. Объявления переменных списка имеют такой же синтаксис, что и другие объявления переменных, за исключением того, что объявления не могут иметь спецификаторов класса памяти или списка начальных значений. Элементы структуры могут быть любого основного типа, массивом, указателем, смесью или структурой.

 

Пример.

struct СТУДЕНТ {

char фио [40];

char ном_зач_кн [7];

char ном_гр [6];

int курс;

} список [20], *ptr;

struct СТУДЕНТ группа();

В этом примере объявляется массив структур типа СТУДЕНТ из 20 элементов, указатель на структуру типа СТУДЕНТ и функция, возвращающая структуру типа СТУДЕНТ.

Структура не может содержать в качестве элемента структуру такого же типа, но может содержать указатель на структуру этого типа при условии, что в объявлении структуры указано имя типа. Это позволяет создавать связные списки структур. Например:

struct tree{

int number;

struct tree *left;

struct tree *ritgh;

};

 

 

Пример.

Описать структуру, позволяющую работать с записями о студентах: ФИО, номер курса, номер групы, форма обучения, оценки, полученные за 3 сессии, если в каждой сессии было по 3 экзамена. Создать три экземпляра такой структуры, заполнить их данными, если формы обучения у студентов одинаковые, то вывести у каждого студента средний балл за всё время обучения, в противном случае посчитать средний балл по каждому предмету (учесть, что один предмет может читаться несколько семестров)

 

struct Fio // описание структуры «Фамилия, имя, отчество»

{

char fm[21]; // фамилия

char im[16]; // имя

char ot[21]; // отчество

};

 

struct sess // описание структуры «Сессия»

{

int ns; // номер сессии

char pred[41]; // название предмета

int oc; //

};

 

 

struct Stud // описание структуры “Студент”

{

struct Fio; // фамилия, имя, отчество

char ig[5]; // номер группы

int nc; // номер курса

char frob[3]; // форма обучения (дневная – “дн”, заочная - ”зо”)

struct sess os; // оценки за сессию

};

 

 

void main()

{ struct Stud st[3]; //создание трёх записей о студентах

// заполнение полей записей

for(int i=0;i<3;i++)

{

CharToOem(“\nВведите фамилию %d – го студента: ”,txt);

printf(txt, i+1);

gets(st[i].Fio.fm);

CharToOem(“\nВведите имя %d – го студента: ”,txt);

printf(txt, i+1);

gets(st[i].Fio.im);

CharToOem(“\nВведите отчество %d – го студента: ”,txt);

printf(txt, i+1);

gets(st[i].Fio.ot);

for(int j=0;j<3;j++)

{

CharToOem(“\nВведите данные по %d – й сессии: ”,txt);

printf(txt, j+1);

for(int k=0;k<3;k++)

{

CharToOem(“\n %d – й экзамен: ”,txt);

printf(txt, k+1);

CharToOem(“Предмет: ”,txt);

puts(txt);

gets(st[i].os.pred.);

CharToOem(“Оценка: ”,txt);

puts(txt);

gets(txt);

st[i].os.oc=atoi(txt);

 

}

}

}

Работа с дисками.

Библиотека Си поддерживает следующие три уровня ввода-вывода:

- ввод-вывод потока;

- ввод-вывод нижнего уровня;

- ввод-вывод для консоли и порта.

 

Ввод-вывод потока.

При вводе вывода потока все данные рассматриваются как поток отдельных байтов. Для пользователя поток – это либо файл на диске, либо физическое устройство, например, такое, как дисплей или печатающее устройство. Поэтому, когда пользователь выполняет операции ввода-вывода для потока, то имеется в виду, что он работает либо с файлами, либо с устройством.

Ввод вывод потока позволяет:

- открывать и закрывать потоки;

- создавать и удалять временные потоки;

- читать и записывать символ;

- читать и записывать строки;

- читать и записывать форматированные данные;

- читать и записывать неформатированные данные;

- анализировать ошибки ввода-вывода потока и условия конца потока (конца файла);

- управлять буферизацией потока и размером буфера;

- выгружать буфера, связанные с потоками;

- получать и устанавливать указатель текущей позиции в потоке.

 

Чтобы использовать функции ввода-вывода потока в программе

необходимо директивой #include включить файл stdio.h. Этот файл содержит объявления функций ввода-вывода, а также определения констант, типов и струк4тур, используемых фунциями потока.

 

Открытие потока.

 

Перед выполнением операций ввода-вывода для потока его нужно открыть. Когда поток открывается для операций ввода-вывода, он связывается со структурой предопределённого типа FILE, содержащей всю необходимую информацию для работы с потоком: такую, как указатель текущей позиции в потоке, указатель на буфер связанный с потоком, тип доступа к потоку и др.. При открытии потока возвращается указатель на структуру FILE, называемый указателем потока.

Для открытия потока библиотека Си представляет три функции: fopen и fdopen открывают потоки, а freopen переназначает указатель на другой поток.

При успешном открытии потока функции открытия возвращают указатель на структуру FILE, в противном случае возвращается нулевой указатель (NULL).

#include <stdio.h>

FILE *file_ptr;

if(file_ptr=fopen(…)== NULL)

printf(“\n Ошибка открытия файла”);

 

Тип доступа к потоку задаётся как аргумент функции открытия. Он является строковым литералом, который может принимать значения:

“r” - поток открывается для чтения;

“w” - открывается пустой поток для записи. Если поток

существует, его содержимое пропадает;

“a” - поток открывается для записи в конец потока. Если поток

не существует, он создаётся;

“r+” - поток открывается для чтения и записи (поток должен

существовать);

“w+” - открывается пустой поток для чтения и записи. Если

поток существует, его содержимое пропадает;

“a+” - поток открывается для чтения и записи в конец

потока. Если поток не существует, он создаётся.

#include <stdio.h>

FILE *file_ptr;

if(file_ptr=fopen(“a:file.dat”,”r”)== NULL)

printf(“\n Ошибка открытия файла”);

else

printf(“\n Файл открыт для чтения”);

 

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

Библиотека Си предоставляет следующие функции для позиционирования указателя текущей позиции в потоке:

ftell(fp) и fgetpos получают текущую позицию указателя потока

fseek и fsetpos устанавливают текущую позицию указателя в потоке

rewind(fp) позиционирует указатель потока на начало потока.

Новая позиция указателя потока в функции fseek задаётся как смещение от некоторой начальной позиции, которая может быть одним из следующих значений

SEEK_SET - начало потока,

SEEK_CUR – текущая позиия указателя потока,

SEEK_END – конец потока.

 

ПРИМЕР использования функции fseek

 

FILE *fp;

long n;

fseek(fp,0L, SEEK_SET);//Позиционирование на начало потока

fseek(fp,0L, SEEK_END); //Позиционирование на конец потока

fseek(fp,n, SEEK_SET); //Позиционирование на n

//байт от начала потока

fseek(fp, n, SEEK_END); //Позиционирование на n

//байт от конца потока

 

fseek(fp, n, SEEK_CUR); //Позиционирование на n

//байт от текущей позиции

 

fseek(fp,- n, SEEK_CUR); //Позиционирование на n

//байт до текущей позиции

fseek(fp,- n, SEEK_ END); //Позиционирование на n

//байт до конца потока

 

Пример

Пусть имеется структура

 

sruct h_main

{

int tipe;

char s[20];

char s2[20];

char s[320];

}

 

 

sruct h_main m;

//позиционирование курсора на начало i–й записи структуры в файле

 

fseek(fmain, i*sizeof(m), SEEK_SET);

чтение

fread(&m, i*sizeof(m), 1, fmain);

запись

fwrite(&m, i*sizeof(m), 1, fmain);

Операции динамического распределения памяти.

Операции new, new[ ],delete, delete[ ] введены в язык С++ с целью решения одной из задач управления памятью, а именно – её динамического распределения. Две операции new, new[ ] предназначены для выделения участков свободной памяти и размещения в них переменных (new[ ] – массивов). Продолжительность существования таким образом созданных (динамических) переменных – от точки создания до конца программы или до явного освобождения соответсвующего участка памяти применением операций delete (delete[] – для удаления массивов).

Первая из рассматриваемых операций предназначена для размещения в динамической памяти переменной заданного аргументом типа (кроме типов массивов) и имеет следующий общий тип

new имя_типа или new имя_типа(выражение)

Вторая форма помимо выделения памяти осуществлвяет её инициализацию значением выражения. В обоих случаях результат операции имеет тип указателя того же типа что и аргумент, (т.е. имя_типа), и значение адреса размещенной динамической переменной. Это значение, очевидно, нужно сохратить в какой-либо переменной-указателе, что обеспечит в дальнейшем доступ к динамической переменной.

Пример создания и использования двух динамических переменных:

int *i = new int, *j = new(5);

*i=*j**j;

Для размещения динамических массивов предусмотрена специальная операция new[ ], вызываемая следующим образом:

new тип_элемента[размер ]... [размер]

Заметим, что не предусмотрено средств для инициализации динамических массивов, и для размещаемых массивов должны быть определены все размерности, более того, только первая размерность может быть задана с помощью переменой, все остальные размерности многомерных массивов должны быть заданы с помощью константы. Результатом операции является указатель на начало созданного массива.

Пример размещения в памяти трехмерного динамического массива






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных