Массивы и указатели
Указатели и адресация
Указатели и адресация
Указатели и адресация
Указатели и адресация
источник: [1]
Шаблон
*
&
Указатели как аргумент функции
Массивы
Двумерный массив
Отношение указателей и массивов
Массивы как аргументы функций
Массив указателей их использование и инициализация
Массив указателей их использование и инициализация
Массив указателей их использование и инициализация
Строки и строковые функции
Строки и строковые функции
Строковые функции <string.h >
Список использованных источников
123.00K
Категория: ПрограммированиеПрограммирование

Массивы и указатели

1. Массивы и указатели

Прико П.А.

2. Указатели и адресация

«Указатель — переменная, содержащая
адрес объекта. Указатель не несет
информации о содержимом объекта, а
содержит сведения о том, где размещен
объект».
Источник: [1]

3. Указатели и адресация

«Каждая переменная в памяти имеет свой
адрес - номер первой ячейки, где она
расположена, а также свое значение».
Источник: [1]

4. Указатели и адресация

«Указатель — это тоже переменная, которая
размещается в памяти. Она тоже имеет
адрес, а ее значение является адресом
некоторой другой переменной».
Источник: [1]

5. Указатели и адресация

«Переменная, объявленная как указатель,
занимает 4 байта в оперативной памяти (в
случае 32-битной версии компилятора)».
Источник: [1]

6. источник: [1]

int a, *b;
a = 134;
b = &a;

7. Шаблон

тип *ИмяОбъекта;
char *p;
Тип указателя— это тип переменной, адрес
которой он содержит».
Источник: https://prog-cpp.ru/c-pointers/

8. *

* Операция «звездочка» -- получить
значение объекта по его адресу
сhar c; // переменная
char *p; // указатель
Источник: [1]

9. &

&
& - операция «амперсанд» -- получить
адрес переменной
сhar c; // переменная
char *p; // указатель
p = &c; // p = адрес c
Источник: [1]

10. Указатели как аргумент функции

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]

11. Массивы

Массив – структура данных, представляющая собой набор
элементов одного типа, компактно размещенный в памяти.
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]; // ошибка!

12. Двумерный массив

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};

13. Отношение указателей и массивов

int A[5] = {1, 2, 3, 4, 5};
Массив хранит адрес, откуда начинаются его элементы
A[3]
эквивалентно
*(A + 3)

14. Массивы как аргументы функций

Массив всегда передается по ссылке! (Копирование потребовало бы
расход памяти)
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;
}

15. Массив указателей их использование и инициализация

«Можно создавать массивы указателей. Для объявления массива
целочисленных указателей из десяти элементов следует
написать:
int *х[10];
Для присвоения адреса целочисленной переменной var
третьему элементу массива следует написать:
х[2] = &var;
Для получения значения var следует написать:
*х [2] ».
Источник: [3]

16. Массив указателей их использование и инициализация

«Если необходимо передать массив указателей в функцию, можно
использовать метод, аналогичный передаче обычных
массивов. Просто надо вызвать функцию с именем массива
без индексов. Например, функция, получающая массив х,
должна выглядеть следующим образом:
void display_array(int *q[])
{
int t;
for (t=0; t<10; t++) {
printf ("%d ", *q[t]);
}
».
Источник: [3]

17. Массив указателей их использование и инициализация

«Надо помнить, что q - это не указатель
на целое, а массив указателей на
целые. Следовательно, необходимо
объявить параметр q как массив
целых указателей. Он не может
объявиться как простой
целочисленный указатель, поскольку
он не является им».
Источник: [3]

18. Строки и строковые функции

Строки в С++ представляются как массивы элементов
типа char, заканчивающиеся нуль-терминатором \0
называются С строками или строками в стиле С.
\0 — символ нуль-терминатора.
Символьные строки состоят из набора символьных
констант заключённых в двойные кавычки. При
объявлении строкового массива необходимо учитывать
наличие в конце строки нуль-терминатора, и отводить
дополнительный байт под него.
Источник: [4]

19. Строки и строковые функции

char string[10];
char string[10] = "abcdefghf"; //9 букв и \0
char string[10] =
{'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'f'
, '\0'};
Источник: [4]

20. Строковые функции <string.h >

Строковые функции <string.h >
Функция
Описание
char *strcat(char *s1, char *s2)
присоединяет s2 к s1, возвращает s1
char *strncat(char *s1, char *s2, int n)
присоединяет не более n символов s2 к s1, завершает строку
символом '\0', возвращает s1
char *strсpy(char *s1, char *s2)
копирует строку s2 в строку s1, включая '\0', возвращает s1
char *strncpy(char *s1, char *s2, int n)
копирует не более n символов строки s2 в строку s1, возвращает
s1;
int strcmp(char *s1, char *s2)
сравнивает s1 и s2, возвращает значение 0, если строки
эквивалентны
int strncmp(char *s1, char *s2, int n)
сравнивает не более n символов строк s1 и s2, возвращает
значение 0, если начальные n символов строк эквивалентны
int strlen(char *s)
возвращает количество символов в строке s
char *strset(char *s, char c)
заполняет строку s символами, код которых равен значению c,
возвращает указатель на строку s
char *strnset(char *s, char c, int n)
заменяет первые n символов строки s символами, код которых
равен c, возвращает указатель на строку s

21. Список использованных источников

1. https://prog-cpp.ru/c-pointers/
2. http://cpp.com.ru/kr_cbook/ch5kr.html#p52
3. http://www.c-cpp.ru/books/massivy-ukazateley
4. http://cppstudio.com/post/437/

22.

Спасибо за внимание!
English     Русский Правила