Стефан Дэвис - С++ для чайников .

Здесь есть возможность читать онлайн «Стефан Дэвис - С++ для чайников .» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Город: Москва, Год выпуска: 2007, ISBN: 2007, Издательство: Издательский дом Вильямс. Компьютерное издательство Диалектика, Жанр: Технические науки, Программирование, Программы, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

С++ для чайников .: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «С++ для чайников .»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

empty-line
1
empty-line
4

С++ для чайников . — читать онлайн бесплатно полную книгу (весь текст) целиком

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «С++ для чайников .», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

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

_________________

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

Рис 105 Команда Debug Step Into Отладка Шаг внутрь позволяет - фото 168

Рис. 10.5. Команда Debug => Step Into ( Отладка => Шаг внутрь ) позволяет выполнить вызов функции пошагово

Рис 106 Отладчик позволяет следить за значениями переменных - фото 169

Рис. 10.6. Отладчик позволяет следить за значениями переменных

_________________

139 стр. Глава 10. Отладка программ на С++

Числа возле имён переменных в окне отладки — адреса, которые в данном случае малоинформативны. Строка szTarget пока что пуста, что вполне закономерно, так как мы ещё ничего в неё не скопировали. Значение строки szString1 также выглядит вполне корректно, но вот значение szString2 содержит сразу две строки — и "This is a string" , и "THIS IS A STRING" , чего вроде бы быть не должно.

Ответ находится в четвёртой переменной. Дело в том, что длина этих двух строк не 16 символов, а 17! Программа не выделила память для завершающего нуля, что и приводит к сбою при выполнении функции StringEmUp( ) .

Длина строки всегда включает завершающий нулевой символ Помни - фото 170

«Длина строки всегда включает завершающий нулевой символ.»

[ Помни! ]

Давайте изменим программу, исправив ошибку. Пусть теперь С++ сам рассчитывает размер строк. Получившаяся в результате программа Concatenate2.срр , приведённая ниже, работает вполне корректно.

/* Concatenate — конкатенация двух строк со вставкой " - " между ними. */

#include

#include

#include

#include

using namespace std ;

void StringEmUp( char* szTarget ,

char* szSource1 ,

char* szSource2 ) ;

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

{

/* печать кириллицы, если Вы не установите программки gccrus.exe и g++rus.exe */

setlocale (LC_ALL,".1251");

cout << "Конкатенация двух строк со вставкой \" - \"\n"

<< "( В этой версии нет ошибки. )" << endl ;

char szStrBuffer[ 256 ] ;

/* Определение двух строк... */

char szString1[ ] = "This is a string" ;

char szString2[ ] = "THIS IS A STRING" ;

/* ...и объединение их в одну */

StringEmUp( szStrBuffer ,

szString1 ,

szString2 ) ;

/* Вывод результата */

cout << "<" << szStrBuffer << ">" << endl ;

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

system( "PAUSE" ) ; return 0 ;

}

_________________

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

void StringEmUp( char* szTarget ,

char* szSource1 ,

char* szSource2 )

{

strcpy( szTarget , szSource1 ) ;

strcat( szTarget , " - " ) ;

strcat( szTarget , szSource2 ) ;

}

Вот вывод этой программы — именно такой, какой мы и ожидали:

Конкатенация двух строк со вставкой В этой версии нет ошибки - фото 171

Конкатенация двух строк со вставкой " - "

( В этой версии нет ошибки. )

Press any key to continue...

! ! ! ! ! ! ! ! ! ! ! ! ! !

Поздравляю! Вам удалось отладить программу.

! ! ! ! ! ! ! ! ! ! ! ! ! !

_________________

141 стр. Глава 10. Отладка программ на С++

Часть 3. ВВЕДЕНИЕ В КЛАССЫ...143

ОГЛАВЛЕНИЕ

СОДЕРЖАНИЕ

Глава 11. ЗНАКОМСТВО С ОБЪЕКТНО-ОРИЕНТИРОВАННЫМ ПРОГРАММИРОВАНИЕМ...145

Глава 12. КЛАССЫ В С++...149

Глава 13. РАБОТА С КЛАССАМИ...154

Глава 14. УКАЗАТЕЛИ НА ОБЪЕКТЫ...167

Глава 15. ЗАЩИЩЁННЫЕ ЧЛЕНЫ КЛАССА: НЕ БЕСПОКОИТЬ!...181

Глава 16. СОЗДАНИЕ И УДАЛЕНИЕ ОБЪЕКТОВ...188

Глава 17. АРГУМЕНТАЦИЯ КОНСТРУИРОВАНИЯ...198

Глава 18. КОПИРУЮЩИЙ КОНСТРУКТОР...213

Глава 19. СТАТИЧЕСКИЕ ЧЛЕНЫ...224

В этой части Основным отличием С от других языков является возможность - фото 172

В этой части Основным отличием С от других языков является возможность - фото 173

В этой части...

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «С++ для чайников .»

Представляем Вашему вниманию похожие книги на «С++ для чайников .» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Отзывы о книге «С++ для чайников .»

Обсуждение, отзывы о книге «С++ для чайников .» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x