Студопедия
МОТОСАФАРИ и МОТОТУРЫ АФРИКА !!!


Авиадвигателестроения Административное право Административное право Беларусии Алгебра Архитектура Безопасность жизнедеятельности Введение в профессию «психолог» Введение в экономику культуры Высшая математика Геология Геоморфология Гидрология и гидрометрии Гидросистемы и гидромашины История Украины Культурология Культурология Логика Маркетинг Машиностроение Медицинская психология Менеджмент Металлы и сварка Методы и средства измерений электрических величин Мировая экономика Начертательная геометрия Основы экономической теории Охрана труда Пожарная тактика Процессы и структуры мышления Профессиональная психология Психология Психология менеджмента Современные фундаментальные и прикладные исследования в приборостроении Социальная психология Социально-философская проблематика Социология Статистика Теоретические основы информатики Теория автоматического регулирования Теория вероятности Транспортное право Туроператор Уголовное право Уголовный процесс Управление современным производством Физика Физические явления Философия Холодильные установки Экология Экономика История экономики Основы экономики Экономика предприятия Экономическая история Экономическая теория Экономический анализ Развитие экономики ЕС Чрезвычайные ситуации ВКонтакте Одноклассники Мой Мир Фейсбук LiveJournal Instagram

Primer 2 Лекция 10




Указатели.

Лекция 10. Указатели. Структуры.

Программы на C++ хранят переменные в памяти. Указатель представляет собой адрес памяти, который указывает на определенный участок.
10.1.1 Использование указателя на символьную строку.
Когда программа передает массив (например, символьную строку) в функцию, C++ передает адрес первого элемента массива. В результате совершенно обычно для функции использовать указатель на символьную строку. Чтобы объявить указатель на символьную строку, функция просто предваряет имя переменной звездочкой:

void some_function(char *string);

highlightSyntax('cpp_97293','cpp'); Звездочка, которая предваряет имя переменной, указывает C++, что переменная будет хранить адрес памяти - указатель. Следующая программа использует указатель на символьную строку внутри функции show_string для вывода содержимого строки по одному символу за один раз.

Primer 1 Лекция 10.

#include <iostream>

using namespace std;

void show_string(char *string)

{

while (*string != '\0')

{

cout << *string;

string++;

}

}

int main()

{

system("chcp 1251");

show_string( "Язык C++!");

system("pause");

}

highlightSyntax('cpp_11850','cpp'); Условие while (*string != '\0') проверяет, не является ли текущий символ, указываемый с помощью указателя string, символом NULL, который определяет последний символ строки. Если символ не NULL, цикл выводит текущий символ с помощью cout. Затем оператор string++; увеличивает указатель siring таким образом, что он указывает на следующий символ строки. Когда указатель string указывает на символ NULL, функция уже вывела строку и цикл завершается.

Строка, переданная в функцию, находится в памяти компьютера по адресу 1000. Каждый раз, когда функция увеличивает указатель string, он указывает на следующий символ (адрес 1001,1002, 1003).

Используя указатель, функция может сканировать строку символов, пока не будет обнаружен символ NULL. Следующая программа использует указатель на строку в функции string_length для определения количества символов в строке.

#include <iostream>

using namespace std;

int string_length(char *string)

{

int length = 0;

while (*string != '\0')

{

length++;

string++;

}

return(length);

}

int main()

{

system("chcp 1251");

char title[] = "Язык C++";

cout << title << endl << "содержит " << string_length(title) << " символов" << endl;

system("pause");

}

highlightSyntax('cpp_97815','cpp'); Когда программа передает массив в функцию, C++ передает адрес памяти первого элемента этого массива. Используя переменную-указатель, функция может перемещаться по содержимому массива, просто увеличивая значение указателя.

10.1.2. Уменьшение количества операторов.




Чтобы определить конец символьной строки, каждая из предыдущих программ использовала следующий цикл while:

while (*string != '\0');

Cимвол NULL ('\0') представляет собой значение ASCII 0. Так как C++ использует значение 0, чтобы представить ложь, можно записать предыдущий цикл следующим образом:

while (*string)

В данном случае пока символ, определяемый указателем строки, не равен 0 (NULL), условие оценивается как истинное и цикл будет продолжаться. Постфиксная операция увеличения C++ позволяет использовать значение переменной, а затем увеличивает это значение. Программы на C++ используют постфиксные операции увеличения и уменьшения, чтобы сканировать массивы с помощью указателей. Например, использование постфиксной операции увеличения делает следующие циклы while идентичными:

while (*string)
{
cout << *string++;
}
 
while (*string)
{
cout << *string;
string++;
}

highlightSyntax('cpp_78762','cpp'); Оператор cout << *string++ позволяет C++ вывести символ, указываемый указателем string, а затем увеличить текущее значение string, чтобы он указывал на следующий символ. С помощью этих методов следующая программа иллюстрирует новую реализацию функций show_string и string_length:





Дата добавления: 2014-02-03; просмотров: 1422; Опубликованный материал нарушает авторские права? | Защита персональных данных | ЗАКАЗАТЬ РАБОТУ


Не нашли то, что искали? Воспользуйтесь поиском:

Лучшие изречения: Студент - человек, постоянно откладывающий неизбежность... 10585 - | 7334 - или читать все...

Читайте также:

 

34.231.21.123 © studopedia.ru Не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования. Есть нарушение авторского права? Напишите нам | Обратная связь.


Генерация страницы за: 0.002 сек.