Запускаем внешнее приложение:
#include <windows.h> #include <stdio.h> int main() { system("cmd"); exit(0); }
Запускаем внешнее приложение:
#include <windows.h> #include <stdio.h> int main() { system("cmd"); exit(0); }
Мы рассмотрели, как объявлять переменные (глава 3), как писать выражения (глава 4) и инструкции (глава 5). Здесь мы покажем, как группировать эти компоненты в определения функций, чтобы облегчить их многократное использование внутри программы. Мы увидим, как объявлять и определять функции и как вызывать их, рассмотрим различные виды передаваемых параметров и обсудим особенности использования каждого вида. Мы расскажем также о различных видах значений, которые может вернуть функция. Будут представлены четыре специальных случая применения функций: встроенные (inline), рекурсивные, написанные на других языках и объявленные директивами связывания, а также функция main(). В завершение главы мы разберем более сложное понятие – указатель на функцию.
Функцию можно рассматривать как операцию, определенную пользователем. В общем случае она задается своим именем. Операнды функции, или формальные параметры, задаются в списке параметров, через запятую. Такой список заключается в круглые скобки. Результатом функции может быть значение, которое называют возвращаемым. Об отсутствии возвращаемого значения сообщают ключевым словом void. Действия, которые производит функция, составляют ее тело; оно заключено в фигурные скобки. Тип возвращаемого значения, ее имя, список параметров и тело составляют определение функции.Вот несколько примеров:
inline int abs( int obj ) { // возвращает абсолютное значение iobj return( iobj < 0 ? -iobj : iobj ); } inline int min( int p1, int p2 ) { // возвращает меньшую из двух величин return( pi < p2 ? pi : p2 ); } int gcd( int vl, int v2 ) { // возвращает наибольший общий делитель while ( v2 ) { int temp = v2; v2 = vl % v2; vl = temp; } return vl; }
Выполнение функции происходит тогда, когда в тексте программы встречается оператор вызова. Если функция принимает параметры, при ее вызове должны быть указаны фактические параметры, аргументы. Их перечисляют внутри скобок, через запятую. В следующем примере main() дважды вызывает abs() и по одному разу min() и gcd(). Функция main() определяется в файле main.C
Вычисление n-ного числа Фибоначчи:
#include size_t fib(size_t n) { if(n==0||n==1) return 1; return fib(n-1)+fib(n-2); } int main() { std::cout << fib(5) << std::endl; return 0; }
Вычисляем рекурсивно факториал:
#include size_t fact(size_t n) { if(n==0) return 1; return n*fact(n-1); } int main() { std::cout << fact(12) >> std::endl; return 0; }
Реализация диалогового окна на C++
class CMyDialog : public CDialogImpl<CMyDialog>; { public: enum { IDD = IDD_MYDLG }; BEGIN_MSG_MAP(CMyDialog) MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog) COMMAND_HANDLER(IDCANCEL, BN_CLICKED, OnBnClickedCancel) END_MSG_MAP() LRESULT OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/) { // Do some initialization code return 1; } public: LRESULT OnBnClickedCancel(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/); };