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

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

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

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

empty-line
1
empty-line
4

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

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

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

Интервал:

Закладка:

Сделать

int* pInts[ 10 ] ;

Таким образом, элемент pInts[ 0 ] является указателем на переменную типа int . Следовательно, приведённый ниже код корректен:

void fn( )

{

int n1 ;

int* pInts[ 3 ] ;

pInts[ 0 ] = & n1 ;

*pInts[ 0 ] = 1 ;

}

Как и этот:

void fn( )

{

int n1 , n2 , n3 ;

int* pInts[ 3 ] = { & n1 , & n2 , & n3 } ;

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

{

*pInts[ i ] = 0 ;

}

}

И даже этот:

void fn( )

{

int n1 , n2 , n3 ;

int* pInts[ 3 ] = { ( new int ) ,

( new int ) ,

( new int ) } ;

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

{

*pInts[ i ] = 0 ;

}

}

В последнем варианте память под переменные выделяется из кучи.

Массивы указателей чаще всего используются для работы с массивами строк. Приведённые далее примеры показывают, почему это удобно.

Использование массивов строк...124

Допустим, мне понадобилась функция, возвращающая название месяца по его номеру. Например, если этой функции передать число 1, она вернёт название первого месяца — "Январь". Номер месяца будет считаться неправильным, если он окажется меньше 1 или больше 12.

_________________

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

Эту функцию можно написать следующим образом:

/* int2month( ) — возвращает название месяца */

char* int2month( int nMonth )

{

char* pszReturnValue ;

switch( nMonth )

{

case 1 : pszReturnValue = "Январь" ;

break ;

case 2 : pszReturnValue = "Февраль" ;

break ;

case 3 : pszReturnValue = "Март" ;

break ;

/* и так далее... */

default : pszReturnValue = "Неверный номер месяца"

}

return pszReturnValue ;

}

Операторswitch действует так же как совокупность операторовif - фото 141

«Операторswitch( ) действует так же, как совокупность операторовif

[ Помни! ]

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

/* int2month( ) — возвращает название месяца */

char* int2month( int nMonth )

{

/* проверка правильности номера месяца */

if ( nMonth < 1 || nMonth > 12 )

{

return "invalid" ;

}

/* nMonth имеет корректное значение */

/* Вернём имя месяца */

char* pszMonths[ ] = { "Ошибка" ,

"Январь" ,

"Февраль" ,

"Март" ,

"Апрель" ,

"Май" ,

"Июнь" ,

"Июль" ,

"Август" ,

"Сентябрь" ,

"Октябрь" ,

"Ноябрь" ,

"Декабрь" } ;

return pszMonths[ nMonth ] ;

}

Сначала в этой программе проверяется корректность аргумента nMonth , т.е. что его значение лежит в диапазоне между 1 и 12 включительно ( в предыдущей программе проверка производилась, по сути, оператором default ). Если значение nMonth правильное, оно используется как смещение внутри массива, содержащего названия месяцев.

_________________

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

Такой способ обращения к строкам по индексу особенно полезен при написании - фото 142

«Такой способ обращения к строкам по индексу особенно полезен при написании программы, работающей на разных языках. Например, массив названий месяцев может инициализироваться во время работы с названиями на разных языках, так чтоptrMonth[ 1 ] всегда будет указывать на январь независимо от используемого языка.»

[ Советы ]

Доступ к аргументам main( )...126

Второй аргумент функции main( ) — массив указателей на строки. Эти строки содержат аргументы, передаваемые программе при вызове. Допустим, я ввёл следующее в командной строке MS DOS:

MyProgram file.txt /w

MS DOS запустит программу, которая находится в файле MyProgram.ехе , и передаст ей как аргументы file.txt и /w . Аргументы, начинающиеся с косой черты ( / ) или дефиса ( - ), обрабатываются операционной системой, как и любые другие: они передаются программе, чтобы та разбиралась с ними сама. Аргументы, которые начинаются с <, >, >>или ||( а иногда и некоторые другие ), представляют особый интерес для операционных систем и программе не передаются.

Аргументы программы являются одновременно аргументами функции main( ) . Переменная pszArgs , передаваемая main( ) , содержит массив указателей на аргументы программы, a nArg — их количество.

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

Интервал:

Закладка:

Сделать

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

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


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

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

x