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

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

char str[80];

char *p1;

p1 = str;

после этого присваивания p1 будет указывать на элемент str[0].

Имя массива без индекса образует

указатель на начало этого

массива.

если нужно получить доступ к пятому элементу массива str, используйте одно из следующих выражений:

str[4]

или

*(p1+4)

Необходимость использования круглых скобок, в которые заключено выражение p1+4, обусловлена тем, что оператор "*" имеет более высокий приоритет, чем оператор "+".

*(p1+4) ; *p1+4

Без этих круглых скобок выражение бы свелось к получению значения, адресуемого указателем p1, т.е. значения первого элемента массива,

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

int main()

{

char str[80]; char token[80];

char *p, *q;

cout << "Введите предложение: ";

gets(str);

p = str;

// Считываем лексему из строки.

while(*р)

{

q = token; // Устанавливаем q для указания на началоwhile(*p != ' ' && *р)

{

*q = *р;

q++; р++;

}

if(*p) р++; // Перемещаемся за пробел.

*q =

'\0'; //

Завершаем лексему нулевым символом.

cout

<< token

<< '\n';

}

return 0;

}

int main()

{

char str[80]; char token[80];

int i, j;

cout << "Введите предложение: ";

gets(str);

// Считываем лексему из строки.

for(i=0; ; i++)

{

for(j=0; str[i]!=' ' && str[i]; j++, i++)

token[j] = str[i];

token[j] = '\0'; // Завершаем лексему

нулевым символом.

cout << token << '\n';

if(!str[i]) break;

}

return 0;

}

#include <iostream> #include <cctype> using namespace std; int main()

{

char str[20] = "I love you";

char *p;

int i;

p = str;

// Индексируем указатель.

for(i=0; p[i]; i++)

p[i] = toupper(p[i]);

cout << p; // Отображаем строку.

return 0;

}

Если С++-компилятор обнаруживает строковый литерал, он сохраняет его в таблице строк программы и генерирует указатель на нужную строку.

#include <iostream> using namespace std; int main()

{

char *s;

s = "Работа с указателями - сплошное

удовольствие!\n";

cout << s;

return 0;

}

Таблица строк это таблица, сгенерированная компилятором

для хранения строк, используемых

в программе.

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