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

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

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

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

empty-line
1
empty-line
4

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

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

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

Интервал:

Закладка:

Сделать

¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯

+0 — 0x110 — charArray[ 0 ]

+1 — 0x111 — charArray[ 1 ]

+2 — 0x112 — charArray[ 2]

... — ... — ...

+n — 0х110+n — charArray[ n ]

¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯

Как видите, добавление смещения к указателю на массив равнозначно переходу к соответствующему значению.

Таким образом, если char* ptr& charArray[ 0 ] ;, то *( ptr + n ) соответствует элементу charArray [ n ] .

Поскольку имеет более высокий приоритет чем сложение операцияptr n - фото 133

«Поскольку * имеет более высокий приоритет, чем сложение, операция*ptr + n привела бы к сложениюn со значением, на которое указываетptr . Чтобы выполнить сначала сложение и лишь затем переход к переменной по указателю, следует использовать скобки. Выражение*( ptr + n ) возвращает элемент, который находится по адресуptr плюсn элементов.»

[ Атас! ]

_________________

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

В действительности соответствие между двумя формами выражений настолько строго, что С++ рассматривает элемент массива array[ n ] как *( ptr + n ), где ptr указывает на первый элемент array. С++ интерпретирует array[ n ] как *( & аrray [ 0 ] +n ). Таким образом, если дано char charArray[ 20 ] , то charArray определяется как & charArray[ 0 ] .

Имя массива, записанное без индекса элемента, интерпретируется как адрес нулевого элемента массива ( или просто адрес массива ). Таким образом, можно упростить приведённую выше запись, поскольку array[ n ] С++ интерпретирует как *( array + n ) .

Использование операций над указателями для адресации внутри массива...119

Концепция соответствия между индексацией массива и арифметикой указателей весьма полезна.

Например, функция displayArray( ) , которая выводит содержимое целочисленного массива, может быть реализована следующим образом:

/* displayArray — отображает элементы массива, имеющего длину nSize */

void displayArray( int intArray[ ] , int nSize )

{

cout << "Значения элементов массива равны:\n" ;

for ( int n = 0 ; n < nSize ; n++ )

{

cout << n << ": " << intArray[ n ] << "\n" ;

}

cout << "\n" ;

}

Эта версия функции использует операции над массивами, которые знакомы нам по предыдущим главам. Если воспользоваться для написания этой функции указателями, программа приобретёт такой вид:

/* displayArray — отображает элементы массива, имеющего длину nSize */

void displayArray( int intArray[ ] , int nSize )

{

cout << "Значения элементов массива равны:\n" ;

int* pArray = intArray ;

for ( int n = 0 ; n < nSize ; n++ , pArray++ )

{

cout << n << ": " << *pArray << "\n" ;

}

cout << "\n" ;

}

Этот вариант функции displayArray начинается с создания указателя на первый элемент массива intArray .

Буквар в начале имени переменной означает что эта переменная является - фото 134

«Буквар в начале имени переменной означает, что эта переменная является указателем, однако это только соглашение, а не стандарт языка С++.»

[ Помни! ]

_________________

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

После этого функция считывает все элементы массива по порядку. При каждом выполнении оператора for происходит вывод текущего элемента из массива intArray . Этот элемент находится по адресу рArray , который увеличивается на единицу при каждом выполнении цикла.

Убедиться в работоспособности описанной функции можно, используя её в следующей функции main( ) :

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

{

int array[ ] = { 4 , 3 , 2 , 1 } ;

displayArray( array , 4 ) ;

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

system( "PAUSE" ) ; return 0 ;

}

Результат работы этой программы имеет следующий вид:

Значения элементов массива равны 0 4 1 3 2 2 3 1 Press any key - фото 135

Значения элементов массива равны:

0: 4

1: 3

2: 2

3: 1

Press any key to continue...

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

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

Интервал:

Закладка:

Сделать

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

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


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

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

x