Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Структуры (struct)

Преобразование строки в число.

Поиск первого вхождения подстроки s2 в строку s1.

Поиск первого вхождения любого символа строки s2 в строке s1.

Поиск последнего входящего символа С в строке S.

Поиск первого вхождения символа С в строке S.

char *strchr (const char *s, int c); возвращает указатель на первую ячейку строки S, содержащую символ C (‘\0’ является частью строки поэтому тоже может разыскиваться). Если символ не найден – возвращается нулевой указатель (см. лист 2 - NULL)

 

char *strrchr(const char *s, int c); аналогично strchr();

 

char *strpbrk(const char *s1, const char *s2); возвращает указатель на 1-ю ячейку s1, где найден любой символ, находящийся в s2. Если никакой символ не найден, то функция возвращает NULL.

 

char *strstr(const char *s1, const char *s2); возвращает указатель на первую встречную подстроку s2 в строки s1. Если не найдена – NULL.

 

а) atoi(s) – строку s преобразует в int (целое число) и возвращает его.

int atoi(const char *s)

концом числа служит любой символ не являющийся цифрой. Если

преобразование не удалось, то возвращается 0.

пример: atoi(“42куку”) вернет 42

б) atol(s) - строку s преобразует в long int(длинное целое)

в) atof(s) - строку s преобразует в float(вещественное). При ошибке – 0.

г) atod(s) - строку s преобразует в double(вещестевенное удвоенное)

 

 

Раздел 6. Структуры.

 

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

 

struct [ имя_типа ] {

тип_1 элемент_1;

тип_2 элемент_2;

тип_n элемент_n;

} [ список_описателей ];

 

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

 

// Определение массива структур и указателя на структуру:

struct {

char fio[30];

int date, code:

double salary:

}staff[100]. *ps;

 

Если список отсутствует, описание структуры определяет новый тип, имя кото­рого можно использовать в дальнейшем наряду со стандартными типами, напри­мер:

 

struct Worker{ // описание нового типа Worker

char fio[30]:

int date, code:

double salary;

}; // описание заканчивается точкой с запятой

// определение массива типа Worker и указателя на тип

Worker: Worker staff[100], *ps;

 

Имя структуры можно использовать сразу после его объявления (определение можно дать позднее) в тех случаях, когда компилятору не требуется знать размер структуры, например:

 

struct List; // объявление структуры List

struct Link{

List *p; // указатель на структуру List

Link *prev, *succ; // указатели на структуру Link

}:

struct List { /* определение структуры List */}:

 

Это позволяет создавать связные списки структур.

Для инициализации структуры значения ее элементов перечисляют в фигурных скобках в порядке их описания:

 

struct{

char fio[30];

int date, code;

double salary;

}worker = {"Страусенке", 31, 215, 3400.55}:

 

При инициализации массивов структур следует заключать в фигурные скобки каждый элемент массива (учитывая, что многомерный массив — это массив мас­сивов):

 

struct complex{

float real, im;

} compl [2][3] = {

{{1, 1}, [1, 1}, {1, 1}}, II строка 1, то есть массив compl[0]

{{2, 2}, {2, 2}, {2, 2}} // строка 2, то есть массив compl[l]

}:

 

Для переменных одного и того же структурного тина определена операция при­сваивания, при этом происходит поэлементное копирование. Структуру можно передавать в функцию и возвращать в качестве значения функции. Другие опе­рации со структурами могут быть определены пользователем (см. «Перегрузка операций», с. 189). Размер структуры не обязательно равен сумме размеров ее элементов, поскольку они могут быть выровнены по границам слова.

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

 

worker worker, staff[100]. *ps;

worker.fio = "Страусенке";

staff[8].code = 215;

ps->salary = 0.12;

 

Если элементом структуры является другая структура, то доступ к ее элементам выполняется через две операции выбора:

 

struct A {int a: double x;};

struct В (A a: double x;} х[2];

х[0].а.а = 1;

х[1].х = 0.1;

 

Как видно из примера, поля разных структур могут иметь одинаковые имена, по­скольку у них разная область видимости. Более того, можно объявлять в одной области видимости структуру и другой объект (например, переменную или мас­сив) с одинаковыми именами, если при определении структурной переменной использовать слово struct, но не советую это делать — запутать компилятор труд­нее, чем себя.

 

Раздел 7. Функции (подпрограммы).

 

<== предыдущая лекция | следующая лекция ==>
S2-константа строка | Объявление и определение функций
Поделиться с друзьями:


Дата добавления: 2014-01-11; Просмотров: 451; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.017 сек.