- •Функции
- •Переменные, объявленные внутри функции, называются локальными
- •int main()
- •int main()
- •Вот как выглядят результаты выполнения этой программы.
- •Локальные переменные не хранят своих значений между
- •Важно!
- •Формальные параметры
- •Глобальные переменные
- •Глобальная переменная создается путем ее объявления вне какой бы то ни было функции.
- •Если глобальная и локальная переменные имеют одинаковые имена, то преимущество находится на стороне
- •// структура объявления функций не возвращающих значений
- •структура объявления функций возвращающих
- •/*область 1 - объявление функций до начала main()
- •// место для объявления прототипов функций
- •// синтаксис объявления прототипа
- •bool palindrom5(int number)
- •// программа-тренажер по выполнению сложения.
- •void drill()
- •■ Глобальные переменные занимают память в течение всего времени выполнения программы, а не
- •// Передача функции указателя.
- •// Передача указателя функции -- исправленная
- •Если массив является аргументом функции, то необходимо понимать, что при вызове такой функции
- •void display(int num[])
- •void display(int *num)
- •Результаты выполнения этой программы
- •Результаты выполнения этой
- •// Одна из версий функции strlen().
- •Длина строки
- •Аргументы функции main():
- •Аргумент командной строки представляет собой информацию, указываемую в команде (командной строке), предназначенной для
- •Параметр argc имеет целочисленный тип и предназначен для хранения количества аргументов командной строки.
- •Параметр argv представляет собой указатель на массив символьных указателей.
- •name Том
- •Чтобы получить доступ к отдельному символу в одном из аргументов командной строки, при
- •Обычно аргументы argc и argv используются для ввода в
- •При передаче программе числовых данных в качестве аргументов командной строки эти данные принимаются
- •Для преобразования аргументов командной строки во внутреннее представление здесь используется стандартная библиотечная функция
- •Чтобы сложить два числа, используйте командную строку такого вида
- •Return
- •Инструкцию return можно использовать с некоторым заданным значением либо без него.
- •void power(int base, int exp)
- •void f()
- •Каждая функция, кроме типа void, возвращает какое-нибудь значение. Это значение явно задается с
- •Если функция, тип которой отличен от типа void, завершается в результате обнаружения закрывающейся
- •int find_substr(char *sub, char *str)
- •Функцию можно объявить так, чтобы она возвращала значение любого типа данных, действительного для
- •Поскольку print_vertical()
- •Функции, которые возвращают
- •char *find_substr(char *sub, char *str)
- •При выполнении этой версии программы получен следующий результат.
- •Прототипы функций
- •Прототипы позволяют компилятору выполнить следующие три важные операции.
- •Общая форма прототипа функции аналогична ее определению за исключением того, что в прототипе
- •void sqr_it(int *i); // прототип функции int main()
- •Рекурсивная функция — это функция, которая вызывает сама
- •// Итеративная версия. int fact(int n)
- •Если рекурсивная функция factr() вызывается с аргументом, равным 1, то сразу возвращает значение
- •Когда функция вызывает сама себя, в системном стеке выделяется память для новых локальных
- •При возвращении каждого рекурсивного вызова из стека извлекаются старые локальные переменные и параметры,
- •Слишком большое количество рекурсивных обращений к функции может вызвать переполнение стека. Поскольку локальные
- •При написании рекурсивной функции необходимо включить в нее инструкцию проверки условия (например, if-инструкцию),
- •// Отображение строки в обратном порядке с помощью рекурсии.
// Одна из версий функции strlen().
#include <iostream> using namespace std;
int mystrlen(char *str); int main()
{
cout << "Длина строки ПРИВЕТ ВСЕМ равна: ";
cout << mystrlen("ПРИВЕТ ВСЕМ");
return 0;
}
// Нестандартная реализация функции strlen(). int mystrlen(char *str)
{
int i;
for(i=0; str[i]; i++); // Находим конец строки.
return i;
}
Длина строки
ПРИВЕТ ВСЕМ равна: 11
Аргументы функции main():
argc и argv
Аргумент командной строки представляет собой информацию, задаваемую в командной строке после имени программы.
Аргумент командной строки представляет собой информацию, указываемую в команде (командной строке), предназначенной для выполнения операционной системой, после имени программы.
cl prog_name
В C++ для функции main() определено два встроенных, но необязательных параметра, argc и argv, которые получают свои значения от аргументов командной строки.
Параметр argc имеет целочисленный тип и предназначен для хранения количества аргументов командной строки.
Его значение всегда не меньше единицы, поскольку имя программы также является одним из учитываемых аргументов.
Параметр argv представляет собой указатель на массив символьных указателей.
Каждый указатель в массиве argv ссылается на строку, содержащую аргумент командной строки.
Элемент argv[0] указывает на имя программы; элемент argv[1] — на первый аргумент, элемент argv[2]
— на второй и т.д.
#include <iostream> using namespace std;
int main(int argc, char *argv[])
{
if(argc!=2)
{
cout << "Вы забыли ввести свое имя.\n";
return 1;
}
cout << "Привет, " << argv[1] << '\n';
return 0;
}
name Том
Привет, Том.
A>name Том
Привет, Том
А>
Чтобы получить доступ к отдельному символу в одном из аргументов командной строки, при обращении к массиву argv добавьте второй индекс.
#include <iostream> using namespace std;
int main(int argc, char *argv[])
{
int t, i;
for(t=0; t<argc; ++t)
{
i = 0;
while(argv[t][i]) {
cout << argv[t][i];
++i;
}
cout << ' ';
}
return 0;
}