Функции
Класс:
extern — глобальная видимость во всех модулях программы (по умолчанию);
static — видимость только в пределах модуля, в котором определена функция.
inline
Функции - пример
n m
0 0
1 0
2 0
int* f(){
int a = 5;
return &a;
// нельзя!
}
Локальные статические переменные
Параметры функции
i j k
до 1 2 3
после 1 3 4
char* t(char* a, const int* b);
Пример 1 - сумма элементов массива
Пример 2 - сумма элементов массива
Пример 2 - сумма элементов массива
Пример 3 - сумма элементов массива
Пример 3 - сумма элементов массива
void fun(PF pf){ ... pf(10); ... }
typedef void (*PF)(int);
PF menu[]={&new, &open, &save};
menu[1](10);
Для доступа к необязательным параметрам внутри функции используются макросы библиотеки va_start, va_arg и va_end, находящиеся в заголовочном файле
#include Неоднозначность
float f(float i){...}
double f(double i){...}
int main(){
float x = 10.09;
double y = 10.09;
cout << f(x) << endl;
cout << f(y) << endl;
// cout << f(10) << endl; Неоднозначность!
}
#include Неоднозначность
int f(int a){return a;}
int f(int a, int b = 1){return a * b;}
int main(){
cout << f(10, 2);
/* cout << f(10); Неоднозначность — что вызывается:
f(int, int) или f(int) ? */
}
Параметры:
class имя
typename имя
template < … > class имя
описание параметра
template
f(...){...}
Шаблоны функций - пример
Шаблоны функций - пример
integral or enumeration type,
pointer to object or pointer to function,
reference to object or reference to function
Описание параметра может быть:
Шаблоны функций - описание параметра (4)
template
void f(){ ... }
Примеры параметра
#include d:\cpp\main.exe one two three D:\CPP\MAIN.EXE
void main(int argc, char* argv[]){
for (int i = 0; i
one
two
three
FILE* fopen(const char* filename, const char* mode);
FILE *f = fopen("d:\\cpp\\data.txt", "rb+");
Предопределенные потоки
Функции ввода/вывода
Работа с файлами - пример 1
Работа с файлами - пример 1
Работа с файлами - пример 1
копирование строк (strcpy, strncpy) сравнение (strcmp, strncmp),
объединение строк (strcat, strncat)
поиск подстроки (strstr)
поиск вхождения символа (strchr, strrchr, strpbrk)
определение длины строки (strlen) и другие.
Другие функции библиотеки
Математические
Использование стандартных функций
В заголовочном файле не должно быть определений
функций и данных.
Внешние объявления
Чтобы сделать доступной в нескольких модулях переменную или константу, необходимо:
- определить ее ровно в одном модуле как глобальную;
- объявить ее как внешнюю с помощью модификатора extern. Поместить это объявление либо в нужные модули, либо в заголовочный файл, который включить в нужные модули.
Все объявления одной переменной должны быть согласованы
Директива #define
#define M 1000
#define Vasia “Василий Иванович”
#define MAX(x,y) ((x)>(y)?(x):(y))
Практически каждый макрос свидетельствует о недостатке в языке, программе или программисте
Альтернативы макросам в С++:
const, inline, template, namespace
#undef имя
#if OPT == 2
#include “hdr2.h”
#elif OPT == 1
#include “hdr1.h”
#elif
#include
#endif
#if 0
int i, j;
double x, y;
#endif
Директивы условной компиляции: пример
#ifndef HEADER_INCLUDED
#include "myheader.h"
#define HEADER_INCLUDED
#endif
Директивы #ifdеf и #ifndеf
f(y+1) + f(f(z)) % t(t(g)(0) + t)(1); g(x+(3,4)-w) | h 5) & m
(f)^m(m);
f(2 * (y+1)) + f(2 * (f(2 * (z[0])))) % f(2 * (0)) + t(1);
f(2 * (2+(3,4)-0,1)) | f(2 * (~ 5)) & f(2 * (0,1))^m(0,1);
Директива #dеfine - антипример
void demo::func1(int) { ... }
определение
namespace DAM = Department_of_Applied_Mathematics;
Пространства имен стандартной библиотеки
// stdio.h
namespace std{
int feof(FILE *f);
...
}
using namespace std;
// cstdio
namespace std{
int feof(FILE *f);
...
}
Если не удалось найти и скачать презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:
Email: Нажмите что бы посмотреть