Кент Рейсдорф. BORLAND C++BUILDER. Раздел 1
Кент Рейсдорф. BORLAND C++BUILDER. Страница 51
Всякий раз, когда вы замечаете^ что определенный фрагмент кода повторяется в программе несколько раз, подумайте, не лучше ли оформить его в виде функции. Сделав это, вы сможете затем в нужном месте просто вызывать функцию.
Сначала с помощью функции getch() с клавиатуры вводится символ. Как вы помните, я использую getch() в конце программ, чтобы предотвратить их преждевременное завершение, и при этом игнорирую возвращаемое значение. Вообще, функция getch() возвращает ASCII-код нажатой клавиши. Поскольку ASCII-код клавиши 1 равен 49, для получения значения индекса нужно вычесть из него 49. Если пользователь нажимает 1, функция возвращает 49, 49 - 49 = 0, что соответствует индексу первого элемента массива. Если пользователь нажмет 2, результатом вычисления будет 1 (50 - 49), и т.д. В цикле do-while предполагается, что будет нажата клавиша 1, 2 или 3. При нажатии любой другой клавиши цикл будет повторяться, ожидая правильного ввода.
Наконец, я хочу обратить ваше внимание на строку 66 листинга 2.4:
mailingListRecord temp = listArray[rec];
Эта строка не является необходимой в данной программе, но я использовал ее в качестве иллюстрации. В ней создается экземпляр структуры mailingListRecord, которому присваивается значение одной из структур массива. Простое присваивание в данном случае оказалось возможно потому, что компилятор знает, как копировать одну структуру в другую. Он просто копирует все члены исходной структуры в соответствующие члены вновь созданного экземпляра.
В этой программе есть еще один фрагмент, который заслуживает внимания. Посмотрите на цикл do-while, который начинается со строки 59:
Теперь вы узнали о структурах. Скорее всего, вы не будете часто использовать структуры в своих программах. Тем не менее, важность этого раздела состоит в том, что он послужит своего рода примером при изучении классов на третий день, «Указатели, ссылки и функции в Си++».