Содержание
- 2. Указатели Инициализация указателей При объявлении указателя надо стремиться выполнить его инициализацию, то есть присвоить ему некоторое
- 3. Указатели Существуют следующие способы инициализации указателей: Присваивание указателю адреса существующего объекта: - с помощью операции получения
- 4. Указатели Еще один пример: struct Test { int test_int; char test_char; double tetst_double; } test={10, 'A',
- 5. Указатели int main() { Test *ptr_Test = &test; cout test_int test_char tetst_double system("pause"); return 0; }
- 6. Указатели - с помощью значения другого инициализированного указателя float var_float = 3.55f; float *ptr_float_1 = &var_float;
- 7. Указатели - с помощью имени массива unsigned array_int[] = {33, 51, 78, 4, 15}; int main()
- 8. Указатели Известно, что имя массива является указателем на его первый элемент, поэтому следующие выражения эквивалентны: cout
- 9. Указатели - с помощью имени функции void func(int,char){ // ……}; void (*ptr_fun)(int,char) = &func; Знак операции
- 10. Указатели 2. Присваивание указателю адреса области памяти в явном виде: char *vp = (char *)0xB8000000; int
- 11. Указатели 3. Присваивание пустого указателя: short *ptr_short = NULL; long *ptr_long = 0; 4. Выделение участка
- 12. Указатели Здесь в динамической памяти выделяется место для хранения величины типа int. int *p_j = new
- 13. Указатели - с помощью функции malloc: int *p_i = (int *)malloc(sizeof(int)); Функция malloc заимствована из языка
- 14. Указатели На программистском сленге это означает появление «мусора» в памяти. Полезный совет при попытке выделения памяти
- 15. Указатели int main() { float *ptr_float = new float(67.44f); if(!ptr_float) { cout exit(1); } else cout
- 16. Указатели Операции над указателями Как уже было сказано, указатели – переменные, хранящие адреса ячеек памяти, то
- 17. Указатели Определим основные операции допустимые над указателями: операция разадресации (разыменования), косвенное обращение к объекту (*); присваивание;
- 18. Указатели сравнение; приведение типов. При работе с указателями очень часто используется операция получения (взятия) адреса (&).
- 19. Указатели Эта операция симметрична, то есть с ее помощью можно получить значение объекта или изменить его.
- 20. Указатели Эта операция применима только к указателям на объект какого-либо типа и на тип void. К
- 21. Указатели Например, при работе с массивами они допустимы, а с указателями на обычные переменные или с
- 22. Указатели Рассмотрим пример использования арифметических операций: float array_float = {3.2, -44.6, -0.073, 12, 5.0}; // ….
- 23. Указатели Операции инкременты, декремента, вычитание константы рассмотреть самостоятельно. Важную операцию представляет операция преобразования указателей. Преобразование указателей
- 24. Указатели - в стиле языка С++, используя операции static_cast, dynamic_cast, reinterpret_cast, например, static_cast (ptr_int); Операции преобразования
- 25. Указатели Обычно операция преобразования используется при выполнении операции присваивания. Присваивание без явного преобразования допускается если в
- 26. Ссылки Ссылки Ссылка (ссылочный тип данных) – синоним имени, указанного при инициализации ссылки. Ссылку можно рассматривать
- 27. Ссылки Пример объявления ссылки: int var_int = 57; int &ref_int = var_int; const char &ref_char =
- 28. Ссылки - тип ссылки должен совпадать с типом величины, на которую она ссылается; - не разрешается
- 29. Ссылки Ссылки позволяют использовать в функциях переменные, передаваемые по адресу, без операции разыменования, что упрощает процесс
- 30. Массивы При использовании простых переменных каждой области памяти для хранения данных соответствует свое имя. Если с
- 31. Массивы Общий формат описания массива: тип_массива имя_массива[размерность] = {инициализация}; Массивы в С++ имеют ряд особенностей: нумерация
- 32. Массивы Примеры объявлений массивов: double array_double[20]; // объявление массива из 20 чисел типа double int array_int[10]
- 33. Массивы Рассмотрим пример: int array_int[10] = {32, -453, 6, 562, -322, 78}; int main() { for(int
- 34. Массивы Здесь объявлен массив целых чисел array_int[10] и инициализирован значениями. Инициализация массива осуществлена не полностью, только
- 35. Массивы Обращение к элементам массива можно осуществлять двумя способами: с помощью операции индексирования – [n], как
- 36. Массивы Поэтому выражение cout можно записать в следующем виде: cout В памяти машины все элементы массива
- 37. Массивы Размерность массива принято задавать с помощью именованных констант, например: const int n_str=10, n_stb=15;, поскольку при
- 38. Массивы Многомерные массивы Многомерные массивы задаются указанием каждого измерения в отдельных квадратных скобках, например, int matr[6][8];.
- 39. Массивы Инициализация многомерного массива также допускается, например, int arr_int[3][3] = {{1,2,3}, {2,3,4}, {3,4,5}}; или же: int
- 40. Массивы Многомерные массивы размещаются в памяти так, что при переходе к следующему элементу, быстрее всех изменяется
- 41. Массивы int **array_int = new int *[nstr]; for(int i=0; i array_int[i] = new int[nstb];
- 42. Массивы Строки Строка – это массив символов, заканчивающийся нуль-символом (‘\0’). По положению нуль-символа компилятор определяет конец
- 43. Массивы Рассмотрим простой пример: char str[10] = "Hello!"; int main() { int i=0; while(str[i] != '\0')
- 44. Массивы Строку можно задать как указатель на константную величину: char *str = "Hello!"; Изменение элементов этой
- 45. Массивы До сих пор мы говорили о массивах, содержащих объекты стандартные типы. А можно ли создавать
- 46. Массивы Объявим массив типа Student: Student arr_Student[10]; Воспользуемся этим массивом arr_Student[0].Name = "Иван"; arr_Student[0].Age = 20;
- 47. Массивы Заметим, что отличия в обращении к элементам такого массива есть, в частности, используется операция доступа
- 48. Массивы И здесь есть отличие – использование операции доступа ‘ -> ’ производит автоматическое разыменование указателя
- 49. Массивы Следующий пример связан с объявлением массива указателей на функции. Предположим, что есть ряд одинаковых функций,
- 50. Массивы int sub(int a, int b) { return a-b; } int mul(int a, int b) {
- 51. Массивы Объявим массив указателей на функции: typedef int (*PF)(int,int); PF ptr_fun[5] = {&add, &sub, &mul,0,0}; Теперь
- 52. Массивы Результат посмотреть обязательно. Следующий вариант вызова функции в работу – через указатель: cout
- 53. Массивы
- 54. Массивы
- 55. Массивы
- 56. Массивы
- 57. Массивы
- 59. Скачать презентацию