Алгоритмические языки и программирование. Указатели презентация

Содержание

Слайд 2

Часть 1

Слайд 3

Указатели

Указатель — это переменная, содержащая адрес ячейки памяти (числовое значение).
Память типичной машины представляет

собой массив последовательно пронумерованных(адресованных) ячеек, с которыми можно работать по отдельности или в виде массива.
Синтаксис объявления указателей:
<тип> *<имя>;
Например: float *a; long int *b;
Два основных оператора для работы с указателями – это оператор & взятия адреса, и оператор * разыменования.

Слайд 4

Указатели и адреса

Оператор &(взятие адреса) применяется только к “объектам”, расположенным в памяти: к

переменным и элементам массивов.
Унарный оператор *(разыменование) есть оператор косвенного доступа. Примененный к указателю, он выдает “объект”, на который данный указатель указывает.

Слайд 5

Пример

#include
#include
void main() {
    int A = 100;
    int *p;
p = &A; //Получаем адрес

переменной A
    printf("%p\n", p);  //Выводим адрес переменной A
    printf("%d\n", *p); //Выводим содержимое переменной A
    *p = 200; //Меняем содержимое переменной A
    printf("%d\n", A);
    printf("%d", *p);
}

Слайд 6

Перестановка двух переменных

void swap(int x, int y) /* НЕВЕРНО */
{
int temp;
temp = x;
x

= y;
y = temp;
}

Слайд 7

Перестановка двух переменных

Чтобы получить желаемый эффект, вызывающей программе надо передать указатели на те

значения, которые должны быть изменены:
swap(&x, &y);

Слайд 8

Перестановка двух переменных

void swap(int *px, int *py)
{
int temp;
temp = *рх;
*рх = *py;
*рy

= temp;
}

Слайд 9

Перестановка двух переменных

Аргументы-указатели позволяют функции осуществлять доступ к объектам вызвавшей ее программы и

дают возможность изменить эти объекты.

a:

b:

px:

py:

в swap:

Слайд 10

Часть 2

Слайд 11

Адресная арифметика

Указатели и целочисленные переменные можно складывать и вычитать. Конструкция р + n

означает адрес объекта, занимающего n-е место после объекта, на который указывает р. Это справедливо безотносительно к типу объекта(исключение void), на который указывает р; n автоматически домножается на коэффициент, соответствующий размеру объекта. Информация о размере неявно присутствует в объявлении р. Если, к примеру, int занимает четыре байта, то коэффициент умножения будет равен четырем.

Слайд 12

Указатели и массивы
int a[10];
int *pa = NULL;
ра = &а[0]; /* будет указывать на

нулевой элемент а, иначе говоря, pa будет содержать адрес элемента а[0].*/
х = *ра; // копирует содержимое а[0] в х.
*(pa+1) ; // возвращает первый элемент массива

a:

a[0]

a[1]

a[2]

a[3]

a[4]

a[5]

a[6]

a[7]

a[8]

a[9]

pa:

pa+1

pa+2

Слайд 13

Нулевой элемент массива и адрес

/* ра и а имеют одно и то же

значение. */
ра = &а[0];
/* Поскольку имя массива является синонимом расположения его
начального элемента, присваивание ра=&а[0] можно также записать в следующем виде: */
pa = a;
// а[i] можно записать как *(а+i)

Слайд 14

Адресная арифметика

Важно помнить что следующее операции опасны:
Использовать арифметические операции с указателями ссылающимися не

на массив.
Арифметические операции между указателями на разные массивы.
Выход за пределы массива(начало и конец) используя адресную арифметику.

Слайд 15

Длина строки

/* strlen: возвращает длину строки */
int strlen(char *s)
{
int n;
// увеличение на 1

некоторой копия указателя, находящегося в личном пользовании функции strlen.
for (n = 0; *s != '\0' ; s++)
n++;
return n;
}

Слайд 16

Длина строки

/* все вызовы правомерны */
strlen("3дравствуй, мир"); /* строковая константа */
char array[100];
strlen(array); /*

char array[100]; */
char * prt = NULL;
strlen(ptr); /* char *ptr; */

Слайд 17

Длина строки

/* strlen: возвращает длину строки s */
int strlen(char *s)
{
char *p = s;
while

(*p != '\0' )
p++;
return p - s;
}

Слайд 18

Символы и строки в С

Слайд 19

Символы и строки в С

Подробнее на сайте: http://cppstudio.com/post/437/

Слайд 20

Лабораторные работы

Слайд 21

Указатели

Создайте и заполните массив из 10 элементов, числами от 100 до 110. Напишите

программу, которая будет выводить адреса элементов массива. Проанализируйте как меняются адреса элементов массива.

Примечание:
Использовать циклы;
Использовать указатели;

Слайд 22

Строки

Напишите программу, вычисляющую количество символов в строке.

Примечание:
Использовать указатели
Использовать циклы

Слайд 23

Среднее арифметическое последовательности чисел

Напишите функцию для нахождения среднего арифметического последовательности чисел, если известно,

что признак конца списка (цифра '0').

Примечание:
Использовать указатели
Использовать циклы
Использовать функции

Имя файла: Алгоритмические-языки-и-программирование.-Указатели.pptx
Количество просмотров: 22
Количество скачиваний: 0