Массивы и указатели Прико П. А.





![источник: [1] int a, *b; a = 134; b источник: [1] int a, *b; a = 134; b](https://present5.com/presentation/3/39178498_453178741.pdf-img/39178498_453178741.pdf-6.jpg)





![Двумерный массив double matrix_a[4][5]; double matrix[4][5]={ 1, 2, 3, 4, Двумерный массив double matrix_a[4][5]; double matrix[4][5]={ 1, 2, 3, 4,](https://present5.com/presentation/3/39178498_453178741.pdf-img/39178498_453178741.pdf-12.jpg)
![Отношение указателей и массивов int A[5] = {1, 2, 3, 4, Отношение указателей и массивов int A[5] = {1, 2, 3, 4,](https://present5.com/presentation/3/39178498_453178741.pdf-img/39178498_453178741.pdf-13.jpg)





![Строки и строковые функции char string[10]; char string[10] = Строки и строковые функции char string[10]; char string[10] =](https://present5.com/presentation/3/39178498_453178741.pdf-img/39178498_453178741.pdf-19.jpg)



Массивы и указатели Прико П. А.
Указатели и адресация «Указатель — переменная, содержащая адрес объекта. Указатель не несет информации о содержимом объекта, а содержит сведения о том, где размещен объект» . Источник: [1]
Указатели и адресация «Каждая переменная в памяти имеет свой адрес - номер первой ячейки, где она расположена, а также свое значение» . Источник: [1]
Указатели и адресация «Указатель — это тоже переменная, которая размещается в памяти. Она тоже имеет адрес, а ее значение является адресом некоторой другой переменной» . Источник: [1]
Указатели и адресация «Переменная, объявленная как указатель, занимает 4 байта в оперативной памяти (в случае 32 -битной версии компилятора)» . Источник: [1]
источник: [1] int a, *b; a = 134; b = &a;
Шаблон тип *Имя. Объекта; char *p; Тип указателя— это тип переменной, адрес которой он содержит» . Источник: https: //prog-cpp. ru/c-pointers/
* * Операция «звездочка» -- получить значение объекта по его адресу сhar c; // переменная char *p; // указатель Источник: [1]
& & - операция «амперсанд» -- получить адрес переменной сhar c; // переменная char *p; // указатель p = &c; // p = адрес c Источник: [1]
Указатели как аргумент функции void swap(int х, int у) { int temp; temp = х; x = y; у = temp; } swap(a, b); //не получится swap(&a, &b); // правильно void swap(int *px, int *py) { int temp; temp = *рх; *рх = *py; *ру = temp; } Источник: [2]
Массивы Массив – структура данных, представляющая собой набор элементов одного типа, компактно размещенный в памяти. double vector_a[10]; //vector_a[0] – указатель на начальный элемент массива double vector[10] = {1, 2, 3, 4, 8, 1, 3, 0, 7, 9}; Элементы массива нумеруются с нуля! double x = vector[4]; // x равно 8 double y = vector[10]; // ошибка!
Двумерный массив double matrix_a[4][5]; double matrix[4][5]={ 1, 2, 3, 4, 5, 2, 3, 4, 5, 6, 3, 4, 5, 6, 7, 1, 3, 5, 7, 9};
Отношение указателей и массивов int A[5] = {1, 2, 3, 4, 5}; Массив хранит адрес, откуда начинаются его элементы A[3] эквивалентно *(A + 3)
Массивы как аргументы функций Массив всегда передается по ссылке! (Копирование потребовало бы расход памяти) int zamena (int vec[10], int i, int k) { for (int j = 0; j < 10; j++) { if (j % k == 0) { vec[j] = vec [i]; } } } int main() { int vector[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; zamena (vector, 1, 3); return 0; }
Массив указателей их использование и инициализация «Можно создавать массивы указателей. Для объявления массива целочисленных указателей из десяти элементов следует написать: int *х[10]; Для присвоения адреса целочисленной переменной var третьему элементу массива следует написать: х[2] = &var; Для получения значения var следует написать: *х [2] » . Источник: [3]
Массив указателей их использование и инициализация «Если необходимо передать массив указателей в функцию, можно использовать метод, аналогичный передаче обычных массивов. Просто надо вызвать функцию с именем массива без индексов. Например, функция, получающая массив х, должна выглядеть следующим образом: void display_array(int *q[]) { int t; for (t=0; t<10; t++) { printf ("%d ", *q[t]); } » . Источник: [3]
Массив указателей их использование и инициализация «Надо помнить, что q - это не указатель на целое, а массив указателей на целые. Следовательно, необходимо объявить параметр q как массив целых указателей. Он не может объявиться как простой целочисленный указатель, поскольку он не является им» . Источник: [3]
Строки и строковые функции Строки в С++ представляются как массивы элементов типа char, заканчивающиеся нуль-терминатором называются С строками или строками в стиле С. — символ нуль-терминатора. Символьные строки состоят из набора символьных констант заключённых в двойные кавычки. При объявлении строкового массива необходимо учитывать наличие в конце строки нуль-терминатора, и отводить дополнительный байт под него. Источник: [4]
Строки и строковые функции char string[10]; char string[10] = "abcdefghf"; //9 букв и char string[10] = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'f' , ' '}; Источник: [4]
Строковые функции
Список использованных источников 1. https: //prog-cpp. ru/c-pointers/ 2. http: //cpp. com. ru/kr_cbook/ch 5 kr. html#p 52 3. http: //www. c-cpp. ru/books/massivy-ukazateley 4. http: //cppstudio. com/post/437/
Спасибо за внимание!

