Лекции (опорный конспект)
.pdf7.9.2.1 Пример динамического выделения памяти (2)
81
7.9.3.Операторы new и delete
•Оператор new выделяет в области память, необходимую для хранения заданного объекта, и возвращает типизированный указатель
•Оператор delete освобождает память, выделенную при помощи оператор new
1) struct MyStruct |
|
|
{ |
|
|
int a; |
|
|
int b; |
2) |
|
int c; |
||
|
||
int d; |
|
|
}; |
|
82
7.9.3.1. Пример динамического выделения памяти (1)
83
7.9.3.1. Пример динамического выделения памяти (2)
84
8.Функции.
8.1.Прототипы функций
•Прототип функции – это объявление функции, содержащее только ее заголовочную часть
или
85
8.2.Параметры функции
•Параметры функции:
–Переменные
–Константы
–Выражения
86
8.2.1. Передача параметров по значению
•Функция работает с временной копией объекта в стековой памяти
•Изменение объекта внутри функции не окажет влияния на оригинал объекта вне функции
87
8.2.2. Передача параметров по ссылке (1)
•В функцию передается адрес переменной
•Изменение объекта внутри функции отразится на его значении вне функции
1) При помощи ссылки |
2) При помощи указателя |
void test(int &var) |
void test(int* var) |
{ |
{ |
var = var+5; |
*var = *var+5; |
} |
} |
void main() |
void main() |
{ |
{ |
int z = 10; |
int z = 10; |
test(z); |
test(&z); |
cout << z; |
cout << z; |
} |
} |
88
8.2.2. Передача параметров по ссылке (2)
3)
4)
89
8.2.3.Массивы как параметры функций
•Массивы всегда передаются в функцию по ссылке: изменение элемента массива внутри функции отразится и за ее пределами
1) void PrintArray(int*, int); |
2) void PrintArray(int[], int); |
void main() |
void main() |
{ |
{ |
int Array[] = {1,3,5,7,9}; |
int Array[] = {1,3,5,7,9}; |
PrintArray(Array, 5); |
PrintArray(Array, 5); |
getch(); |
getch(); |
} |
} |
void PrintArray(int* A, int n) |
void PrintArray(int A[], int n) |
{ |
{ |
for (int i=0; i<n; i++) |
for (int i=0; i<n; i++) |
cout << A[i] << " "; |
cout << A[i] << " "; |
} |
} |
90