Добавил:
ПОИТ 2016-2020 Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
59
Добавлен:
29.04.2018
Размер:
1.63 Mб
Скачать

30. Стандартные функции работы со строками.

31. Логические переменные и примеры их использования в программах.

Логические данные хранятся в переменных типа bool. Хранить они могут только два значения:

«Верно» — это true;

«Ложь» — это false;

bool var = true;

int count;

while (var) {

count = count + 1;

if (count > 100)

var = false;

}

32. Понятие указателя.

Указатель это переменная, значением которой является адрес. Можно объявить другую переменную, которая будет хранить этот адрес и которая называется указателем. Пусть объявлена переменная а: int a = 0; Указатель на нее: int *ptr; Можно в указатель поместить адрес переменной и напечатать его: ptr = &a; cout << ptr;  Здесь & операция получения адреса, * операция разыменования. Через указатель можно изменять значение, хранящееся по адресу, например: int a, *ptr; ptr = &a; a = 10; cout << a<<" "<<*ptr<  *ptr = 20; cout << a<<" "<<*ptr<  Чтобы выполнить арифметические и логические операции над указателями или над объектами, на которые они указывают, необходимо при выполнении каждой операции явно определить тип объектов. При выполнении операций учитывается тип указателей.

33. Операции над указателями.

Указатели могут встречаться в выражениях. То есть если p - указатель на объект некоторого типа, то он может использоваться в выражении наряду с другими указателями, а также переменными и константами, не являющимися указателями, например:

*p=-2;

*p/=i-1;

(*p)--;

В первом выражении значение -2 заносится в ячейку памяти по адресу p, во втором выражении это значение уменьшается в i-1 раз, в третьем - уменьшается на единицу. В третьем выражении использованы скобки, так как операции с одинаковым приоритетом выполняются справа налево, таким образом *p-- уменьшит адрес.

Указатели могут использоваться в качестве операндов в арифметических выражениях. Так, например, если p - указатель, то p++ является адресом следующего элемента. Следовательно, конструкция p+n (p - указатель, n - целое число) задает адрес n-го элемента, на который указывает указатель p+n.

Между адресами могут быть выполнены операции сравнения. Так же любой адрес может быть проверен на равенство (==) или неравенство (!=) со специальным значением NULL. NULL определяет указатель, который ничего не адресует.

#include <stdio.h>

void main(void) /*демонстрация объявления указателей*/

{ int *p,i; /* на объект типа int */

scanf("%d",&i);

p=&i; /* теперь р содержит адрес переменной i*/

printf(" i=%d",i); /* печать значения переменной i */

printf(" *p=%d",*p); /* печать значения по адресу p*/

}

К указателю типа void* применяются следующие операции:

 = , == , != , > , < , <= , >=

Операции над указателями:

• присваивания,

• доступа по указателю (разыменование (*)),

• инкремента или декремента,

• сложение с константой,

• вычитание двух указателей,

• сравнение указателей (одного типа),

• приведение типов,

• получения адреса (&)

34. Массивы и указатели. Понятие индекса. Инициализация. Доступ к компонентам.

Указатели и массивы

Объявляя массив, мы объявляем имя массива как указатель на его

Номер элемента массива по одной размерности называется его индексом.

Число элементов массива называется размером массива.

Число элементов статического массива задается при его объявлении и в процессе выполнения программы не меняется.

Доступ к элементу массива производится путем указания имени массива и номера элемента.

Нумерация элементов может выполняться одной или несколькими последовательностями целых чисел – индексными последовательностями.

Если нумерация выполняется одной последовательностью говорят, что массив является одномерным, в противном случае – многомерным.

Инициализация указателей

 Указатель можно инициализировать адресом переменной, которая уже определена:

double dvar = 0.0;

double *pvar = &dvar;

 Инициализация значением NULL гарантирует, что указатель не содержит адреса, который воспринимается как корректный, а значение можно проверить в операторе if :

 int *pinteger = NULL;

if (pinteger == NULL) cout << pinteger is null;

равнозначная альтернатива инициализировать указатель 0:

int *pinteger = 0;

if (!pinteger) cout << pinteger is null;

Соседние файлы в папке Пустовалова 1 сем