Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lekcii_1_10 / Лекция 06.pptx
Скачиваний:
39
Добавлен:
21.05.2015
Размер:
589.2 Кб
Скачать

Значение одного указателя можно сравнивать с другим.

Чтобы сравнение указателей имело смысл, сравниваемые указатели должны быть каким-то образом связаны друг с другом.

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

Даны два указателя (с именами А и В), которые ссылаются на один и тот же массив. Если А меньше В, значит, указатель А указывает на элемент, индекс которого меньше индекса элемента, адресуемого указателем В.

int main()

 

{

 

int num[10];

int *start, *end;

start = num;

end = &num[9];

while(start <= end)

{

cout << "Введите число: ";

cin >> *start;

start++;

}

start = num; /* Восстановление указателя */

while(start <= end)

{

cout << *start << ' ';

start++;

}

return 0;

}

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

Указатели, подобно данным других типов, могут храниться в массивах. Вот, например, как выглядит объявление 10- элементного массива указателей на int- значения.

int *ipa[10];

Здесь каждый элемент массива ipa содержит указатель на целочисленное значение.

Чтобы присвоить адрес int-переменной с именем var третьему элементу этого массива указателей, запишите

следующее.

Чтобы присвоить значение переменной var целочисленной переменной х с помощью массива ipa, используйте такой синтаксис.

x = *ipa[2];

адрес переменной var хранится в элементе ipa[2], применение оператора "*" к этой индексированной переменной позволит получить значение

char *fortunes[] = {

"Вскоре деньги потекут к Вам рекой.\n",

"Вашу жизнь озарит новая любовь.\n",

"Вы будете жить долго и счастливо.\n",

"Деньги, вложенные сейчас в дело, принесут доход.\n",

"Близкий друг будет искать Вашего

расположения.\n"

};

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

#include <iostream>

#include <cstdlib> #include <conio.h> using namespace std; char *fortunes[] = {

"Вскоре деньги потекут к Вам рекой.\n",

"Вашу жизнь озарит новая любовь.\n",

"Вы будете жить долго и счастливо.\n",

"Деньги, вложенные сейчас в дело, принесут доход.\n",

"Близкий друг будет искать Вашего расположения.\n"

};

int main()

{

int chance;

cout <<"Чтобы узнать свою судьбу, нажмите любую клавишу: ";

// Рандомизируем генератор случайных чисел.

while(!kbhit()) rand();

cout << '\n';

chance = rand();

chance = chance % 5;

cout << fortunes[chance];

return 0;

}

Объявленный, но не инициализированный указатель будет содержать произвольное значение.

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

Если указатель содержит нулевое значение, считается, что он ни на что не ссылается

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

float *р = 0; // р — теперь нулевой указатель.

Для тестирования указателя используется инструкция if (любой из следующих ее вариантов).

if(р) // Выполняем что-то, если р

— не нулевой указатель.

if(!p) // Выполняем что-то, если р

— нулевой указатель.

Соседние файлы в папке lekcii_1_10