Вызов функции должен находиться в левой части присваивания
Стр 1 из 3Следующая ⇒ 25) Динамическое распределение памяти ОС позволяет программе захватывать свободные блоки. Стартовый код создает списки свободных и занятых блоков в куче (В каждой записе о блоке хранится адрес его начала и размер в байтах) Для динамического распр. памяти в стандартной библ.. stdlib.h Void malloc(t size); t-unsigned int, ф-я malloc пытается захватить в куче блок размером size, возвращает адресс блока, если неудача то возвр. NULL. new and delete в С++ new — оператор, обеспечивающий выделение динамической памяти в куче. При помощи оператора new[] невозможно напрямую перераспределить уже выделенную память. Для увеличения или уменьшения размера блока памяти нужно выделить новый блок нужного размера, скопировать данные из старой памяти и удалить старый блок. Оператор delete возвращает память, выделенную оператором new , обратно в кучу. Вызов delete должен происходить для каждого вызова new, дабы избежать утечки памяти. После вызова delete объект, указывающий на этот участок памяти, становится некорректным и не должен больше использоваться.Работа с указателями на примере строк Вывод строки на экран: #include <iostream.h> void show_string(char *string) { while (*string!= '\0') { cout<<*string; Void main(void) { show_string("Учимся программировать на языке C++!"); } Определения количества символов в строке: #include <iostream.h> int string_length(char *string) { int length = 0; { length++; Void main(void) { char title[] = "Учимся программировать на языке C++"; Сравнение строк: Функция strcmp #include ‘string.h’ Функция strcmp() сравнивает в лексикографическом порядке две строки и возвращает целое значение, зависящее следующим образом от результата сравнения.
int strcmp(const char *cs, const char *ct) { signed char __res; while (1) { if ((__res = *cs - *ct++)!= 0 ||!*cs++) break; } return __res; }
Конкатенация строк
Функция копирует содержимое строки src в строку dest, поверх его содержимого и возращает полученную в результате строку dest.
Функция присоединяет содержимое строки src в конец строки dest и возращает результат присоединения. - потому, что для работы функции strlen(const char*) нужно, чтобы строка, передаваемая параметром, сама оканчивалась на '\0', т.к. нуль-терминатор обозначает конец строки.
Как видно из реализации, цикл while (подсчет символов) продолжается до тех пор, пока очередной символ не равен '\0' strncat() Удалить последний символ строки String Text = "Hello World!!"; Text.Delete(Text.Length(),1); Удаление символов строки #include <string>erase (size_type pos=0,size_type n=npos) - удаляет n символов с указанной позиции; erase (iterator p) - удаляет один символ в указанной позиции; erase (iterator f, iterator l) - удаляет символы с позиции f по l. Сегмент данных для хранения констант Директива #define служит для замены часто использующихся констант, ключевых слов, операторов или выражений некоторыми идентификаторами. #define имя_макроса последовательность_символов Функции стандартной библиотеки для работы со строками string.h char *strcpy(char *dsk, char *src); \\ из src копирует в dsk int strcmp(char *s1, char *s2); \\ сравнение строк, то что по алф раньше-меньше
char *strcut (char *s1, char *s2); \\ s2 дописывается к s1 сhar *strstr(char *str,char *substr); \\ возвращает указатель на первое вхождение substr в строке str Функция strchr() возвращает указатель на местонахождение первого совпадения с символом c в строке s... а если символ не найден, то возвращают NULL. char *numbers = "01233210";char *three = strchr(numbers, '3'); int strlen(char *s);-длина строки char *strtok(char * str, char * delim); \\ разбивает фразу на части Функция strtok #include <string.h> char *strtok(char * str1, const char * str2); Функция strtok() разбивает строку на лексемы. При каждом вызове возвращает адрес первой лексемы возвращает указатель на следующую лексему в строке, адресуемой параметром str1. Символы, образующие строку, адресуемую параметром str2, представляют собой разделители, которые определяют лексему. При отсутствии лексемы, подлежащей возврату, возвращается нулевой указатель. Пример Эта программа разбивает строку "Травка зеленеет, солнышко блестит" на лексемы, разделителями которых служат пробелы и запятые. В результате получится Травка|зеленеет|солнышко|блестит #include <stdio.h> #include <string.h>
int main(void) { char *p;
p = strtok("Травка зеленеет, солнышко блестит", " "); printf(p); do { p = strtok('\0', ", "); if(p) printf("|%s", p); } while(p);
return 0; }
22) Указатели на функции. Указатели на функции [1] —Функция располагается в памяти по определенному адресу, который можно присвоить указателю в качестве его значения. Адресом функции является ее точка входа. Именно этот адрес используется при вызове функции. Так как указатель хранит адрес функции, то она может быть вызвана с помощью этого указателя. Он позволяет также передавать ее другим функциям в качестве аргумента.
23) Описания в кот. встреч. [],(),* считаются сложными Пример int *(*f[3])(int, double) 1- имя f. 2-массив в 3х эл. (Если справа () – то функция, если [] то массив) 3- массив из 3х указателей на функцию с 2мя арг. int, double.(Ecли справа от имени есть(), а слева *, то приоритет имеют скобки) 4-тип возвращ. значения вначале int *,т.е. функции возвращ. указатели на int.
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|