Как работать с массивом символов — КиберПедия 

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

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

Как работать с массивом символов

2020-12-06 103
Как работать с массивом символов 0.00 из 5.00 0 оценок
Заказать работу

Else

{ инструкция_2}

и                                                                    

if (условное_выражение)

инструкция_1

 

21. Операторы цикла. Оператор [For]

Цикл с параметром строится по схеме:

for (E1; E2; E3) инструкция, где E1, E2 и E3 - выражения скалярного типа. Цикл с параметром реализуется по следующему алгоритму:

● вычисляется выражение E1 (обычно это выражение выполняет подготовку к началу цикла);

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

● если E2 не равно нулю, выполняется инструкция - тело цикла;

● вычисляется выражение E3 - выполняется подготовка к повторению цикла, после чего снова выполняется выражение E2.

22. Операторы цикла. Оператор [while]

while (условие)

{

    блок инструкций

}

23. Операторы цикла. Оператор [Do while]

 do

{

    Блок инструкций

}

while (условие);

24. Объявление массива и инициализация массива

1)статический массив: тип имя_массива [кол-во_строк][кол-во столбцов(если есть)] = {перечисление переменных}

2)динамический массив: тип * имя_массива = new тип[кол-во єл-тов массива(может использоваться переменная)];

25. Размер массива и способы (?) его задания

Смотри 24 вопрос

Размер зависит от типа массива и зарезервированной при объявлении массива памяти. Если в массив попытаться ввести больше элементов чем он может принять, то часть выходящая за рамуи массива будет утеряна

26. Понятие указателя
Указатель – это объект, содержащий адрес другого объекта и позволяющий косвенно манипулировать этим объектом. Каждый указатель ассоциируется с некоторым типом данных, который определяет тип указателя.

Указатель представляет собой адрес памяти, который указывает (или ссылается) на определенный участок.

int *pi; // Указатель на объект целого тип

27. Константный указатель и особенности
Указатель на константу хранит адрес константы. Для этого нужно ко всему определению добавить префикс const.

const double *pd;

Константным является объект, а не указатель, который на него указывает. Указателю на константу можно присвоить адрес обычной переменной. Но такую переменную нельзя изменить через этот указатель. Указатель на const нельзя присвоить указателю типа void *.

Существует константный указатель, которые может указывать на любые объекты. Значения этих объектов можно менять, но сам указатель нельзя изменить после определения. Для описания константного указателя нужно поставить const не перед всем определением, а перед именем указателя справа от *. Такой указатель нужно инициализировать при определении:

int i = 1;

int * const pi = &i;

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

28. Для чего используется массив символов

      Для хранения строк символов, не особо имеет смысл, поскольку придуманы строковые переменные типа string.

Как работать с массивом символов

Массивы символов могут инициализироваться так называемым строковым литералом. Строковый литерал - это строковая константа. Строка символов хранится в памяти как массив, и доступ к ней осуществляется при помощи указателя типа char *.

Для использования этих функций необходимо включить заголовочный файл: #include<cstring> или #include<string.h> Указатель на char, с помощью которого мы обращаемся к строке, указывает на соответствующий строке массив символов.

При работе со стандартными строками в стиле С (массивами символов) нельзя сравнивать строки с помощью == и присваивать их друг другу с помощью =. Для чтения строковых данных целесообразно вначале выделить память для массива символов, достаточную для размещения строки:

Для чего необходимо динамическое распределение памяти

Динамическое распределение памяти — способ выделения оперативной памяти компьютера для объектов в программе, при котором выделение памяти под объект осуществляется во время выполнения программы

Необходим, чтобы использовать структуры данных, размер которых не известен точно на этапе разработке программы.

 

Использование ссылок

Ссылка представляет собой альтернативное имя объекта. Тип ссылки определяется спецификацией типа, за которой следует операция &. Так же, как и константа, ссылка при определении должна быть инициализирована некоторым существующим объектом:

int i = 10;

int &j = i;

j теперь будет другим именем для i. Ссылка иногда также называется псевдонимом. Любые действия с объектом могут теперь производиться как с использованием основного имени, так и с использованием ссылки.

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

Нельзя определять массив ссылок:

Нет константных ссылок, однако существуют ссылки на константный объект. Через ссылку на константный объект нельзя менять сам объект:

int i = 100;

const int &ciref = i;

ciref = 200;            // ошибка

Ссылку на константный объект можно инициализировать константой и объектом не ее типа.

Параметры ссылки

<Тип ссылки>&<имя ссылки>;

Тип ссылки определяется спецификацией типа, за которой следует операция &

Примеры

1. int A = 5;

2. int& rA = A;

3. extern int& rB;

4. int& foo ();

5. void bar (int& rP);

 

65. Способы передачи параметров

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

Способы передачи:

·   по значению [в стек заносятся копии значений аргументов; функция работает с копиями]

* значения фактических параметров копируются в память, отведенную для формальных параметров. При этом значения, с которыми работает функция - это ее собственные локальные копии фактических параметров и их изменение на эти параметры не влияет. При окончании функции эти локальные значения теряются. Таким образом, при передаче по значению содержимое фактических параметров не изменяется

·   по адресу (ссылке) [в стек заносятся копии адресов аргументов и функция осуществляет доступ к ячейкам памяти по этим адресам. Могут изменяться исходные значения аргументов]

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

 

Функции подстановки

Функции-подстановки, или встроенные, объявлены с модификатором inline:

inline int min(int a, int b)

{

return a < b? a: b;

}

Если функция объявлена встроенной, то компилятор подставляет в точку вызова ее тело. Спецификация inline служит подсказкой транслятору. Из-за наличия взаиморекурсивных вызовов функций-подстановок, а также функций-подстановок, рекурсивность которых зависит от входных данных, нельзя утверждать, что каждый вызов функции-подстановки действительно реализуется подстановкой ее тела.

Целесообразно с модификатором inline описывать самые простые функции, многократная подстановка которых не существенно повлияет на размеры программы.

 

Перегруженные функции

 

Перегрузка функций — возможность создавать несколько функций с одинаковыми именами но с различным набором параметров.

Для реализации нужно создать несколько функций с одинаковыми именами и типом возвращаемого данных.

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

int max(int, int); // Выбор максимального из двух целых чисел

int max(const int *, int); // Выбор максимального элемента массива

int max(const List&);        // Выбор максимального элемента списка

 

Указатель на функцию

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

Указатель на функцию должен тоже описываться с тем же списком параметров и типом возвращаемого значения, что и сама функция. → int (*pf)(int);

 

Скобки вокруг *pf обязательны. Имя функции без следующих за ним скобок интерпретируется как указатель на функцию. Указатель на функцию применяется для вызова функции, которую он адресует.

Часто для удобства определяют синоним типа указателя на функцию через typedef:

typedef int (*FuncType)(int);

FuncType pf;

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

Указатели могут адресовать варианты перегруженной функции. При этом транслятор подбирает вариант, находя точное сопоставление списка формальных параметров и типа возвращаемого значения. Если такого точного сопоставления нет, то будет сообщение об ошибке.

 

Виды областей видимости

 

·     Локальная

·   Глобальная

·   Классовая

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

В С++ каждый класс образует собственную классовую область видимости, которая не совпадает ни с файловой, ни с какой-либо локальной.

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

 

Else

{ инструкция_2}

и                                                                    

if (условное_выражение)

инструкция_1

 

21. Операторы цикла. Оператор [For]

Цикл с параметром строится по схеме:

for (E1; E2; E3) инструкция, где E1, E2 и E3 - выражения скалярного типа. Цикл с параметром реализуется по следующему алгоритму:

● вычисляется выражение E1 (обычно это выражение выполняет подготовку к началу цикла);

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

● если E2 не равно нулю, выполняется инструкция - тело цикла;

● вычисляется выражение E3 - выполняется подготовка к повторению цикла, после чего снова выполняется выражение E2.

22. Операторы цикла. Оператор [while]

while (условие)

{

    блок инструкций

}

23. Операторы цикла. Оператор [Do while]

 do

{

    Блок инструкций

}

while (условие);

24. Объявление массива и инициализация массива

1)статический массив: тип имя_массива [кол-во_строк][кол-во столбцов(если есть)] = {перечисление переменных}

2)динамический массив: тип * имя_массива = new тип[кол-во єл-тов массива(может использоваться переменная)];

25. Размер массива и способы (?) его задания

Смотри 24 вопрос

Размер зависит от типа массива и зарезервированной при объявлении массива памяти. Если в массив попытаться ввести больше элементов чем он может принять, то часть выходящая за рамуи массива будет утеряна

26. Понятие указателя
Указатель – это объект, содержащий адрес другого объекта и позволяющий косвенно манипулировать этим объектом. Каждый указатель ассоциируется с некоторым типом данных, который определяет тип указателя.

Указатель представляет собой адрес памяти, который указывает (или ссылается) на определенный участок.

int *pi; // Указатель на объект целого тип

27. Константный указатель и особенности
Указатель на константу хранит адрес константы. Для этого нужно ко всему определению добавить префикс const.

const double *pd;

Константным является объект, а не указатель, который на него указывает. Указателю на константу можно присвоить адрес обычной переменной. Но такую переменную нельзя изменить через этот указатель. Указатель на const нельзя присвоить указателю типа void *.

Существует константный указатель, которые может указывать на любые объекты. Значения этих объектов можно менять, но сам указатель нельзя изменить после определения. Для описания константного указателя нужно поставить const не перед всем определением, а перед именем указателя справа от *. Такой указатель нужно инициализировать при определении:

int i = 1;

int * const pi = &i;

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

28. Для чего используется массив символов

      Для хранения строк символов, не особо имеет смысл, поскольку придуманы строковые переменные типа string.

Как работать с массивом символов

Массивы символов могут инициализироваться так называемым строковым литералом. Строковый литерал - это строковая константа. Строка символов хранится в памяти как массив, и доступ к ней осуществляется при помощи указателя типа char *.

Для использования этих функций необходимо включить заголовочный файл: #include<cstring> или #include<string.h> Указатель на char, с помощью которого мы обращаемся к строке, указывает на соответствующий строке массив символов.

При работе со стандартными строками в стиле С (массивами символов) нельзя сравнивать строки с помощью == и присваивать их друг другу с помощью =. Для чтения строковых данных целесообразно вначале выделить память для массива символов, достаточную для размещения строки:


Поделиться с друзьями:

Историки об Елизавете Петровне: Елизавета попала между двумя встречными культурными течениями, воспитывалась среди новых европейских веяний и преданий...

Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...

История развития пистолетов-пулеметов: Предпосылкой для возникновения пистолетов-пулеметов послужила давняя тенденция тяготения винтовок...

Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ - конструкции, предназначен­ные для поддерживания проводов на необходимой высоте над землей, водой...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.051 с.