Читаем С++ для "чайников" . полностью

<p id="chapter9.1.3"><emphasis><strong>Использование указателей для работы со строками...120</strong></emphasis></p>

Строку с завершающим нулевым символом можно рассматривать как массив символов, в котором последний символ равен нулю ( язык С++ использует нуль как символ конца строки ). Такие нуль-завершённые массивы можно рассматривать как отдельный тип ( точнее, квази-тип ), о котором шла речь в главе 7, "Хранение последовательностей в массивах". В С++ для работы со строками часто используются указатели. В приведённых ниже примерах показано, каковы отличия в работе со строками в случае применения массивов и указателей.

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

      /* DisplayString — вывод символьного массива с использованием указателей и индексов массива */

      #include

      #include

      #include

      using namespace std ;

      int main( int nNumberofArgs , char* pszArgs[ ] )

      {

      setlocale ( LC_ALL , ".1251" ) ; /* печать русских текстов */

           /* Объявляем строку */

           char* szString = "Randy" ;

_________________

120 стр. Часть 2. Становимся функциональными программистами

           cout << "Массив ' " << szString << " ' " << endl ;

           /* Выводим szString как массив */

           cout << "Выводим строку как массив: " ;

           for ( int i = 0 ; i < 5 ; i++ )

           {

               cout << szString[ i ] ;

           }

           cout << endl ;

           /* Воспользуемся арифметикой указателей */

           cout << "Выводим строку с помощью указателя: " ;

           char* pszString = szString ;

           while ( *pszString )

           {

               cout << *pszString ;

               pszString++ ;

           }

           cout << endl ;

           /* Пауза для того, чтобы посмотреть на результат работы программы */

           system( "PAUSE" ) ; return 0 ;

    }

Программа сначала проходит по массиву szString с использованием индекса массива. Цикл for прекращает работу, когда индекс достигает значения 5, равного длине строки.

Второй цикл выводит ту же строку с использованием указателя. Программа устанавливает указатель pszString равным адресу первого символа массива. Затем цикл проходит по всем символам строки до тех пор, пока символ, на который указывает pszString, не станет равен false, другими словами, пока указатель не станет указывать на нулевой символ.

 

«Целое значение 0 в С++ рассматривается как false, прочие целочисленные значения — как true

[Помни!]

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

 

«Разыменование и инкремент могут быть объединены ( обычно так и делается ) в единое выражение следующим образом:

    cout << *pszString++ ;

»

 [Помни!]

Вывод данной программы выглядит так:

    Массив ' Randy '

    Выводим строку как массив: Randy

    Randy Выводим строку с помощью указателя: Randy

    Press any key to continue...

_________________

121 стр. Глава 9. Второе знакомство с указателями

<p id="chapter9.1.4"><emphasis><strong>Почему при работе со строками пользуются указателями...122</strong></emphasis></p>

Иногда некоторая запутанность работы с указателями вызывает у читателя вполне резонный вопрос: почему рекомендуется использовать указатели? Иными словами, что делает использование указателя char* предпочтительнее более простого для чтения варианта с массивами и индексами?

Перейти на страницу:

Все книги серии Для чайников

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных