Стивен Прата - Язык программирования C. Лекции и упражнения (6-е изд.) 2015

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

Язык программирования C. Лекции и упражнения (6-е изд.) 2015: краткое содержание, описание и аннотация

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

Язык программирования C. Лекции и упражнения (6-е изд.) 2015 — читать онлайн бесплатно полную книгу (весь текст) целиком

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

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

Интервал:

Закладка:

Сделать

Прототипы функций

В отличие от С, в языке C++ прототипирование функций является обязательным. Это отличие проявляется, когда вы оставляете пустыми скобки в объявлении функции.

912 Приложение Б

В языке С пустые скобки означают, что это заблаговременное прототипирование, но в C++ это значит, что функция не имеет параметров. Таким образом, в C++ прототип

В С компилятор предполагает что вы применяете старую форму объявления функций - фото 709

В С компилятор предполагает, что вы применяете старую форму объявления функций. В C++ компилятор предполагает, что slice() — это то же самое, что slice (void), и вам не удастся объявить функцию slice (int, int).

К тому же язык C++ позволяет объявлять более одной функции с одним и тем же именем при условии, что они имеют разные списки аргументов.

Константы char

В С константы char трактуются как имеющие тип int, а в C++ — как принадлежащие типу char. Например, рассмотрим следующий оператор:

char ch = 'А';

В языке С константа 'А' сохраняется в области памяти с размером int; точнее говоря, код этого символа сохраняется как значение типа int. То же самое числовое значение также сохраняется в переменной ch, но здесь оно занимает только один байт памяти.

С другой стороны, в C++ для ' А' используется один байт, как и для ch. Это отличие не касается каких-либо примеров, рассмотренных в книге. Тем не менее, в некоторых программах на С применяются константы char, имеющие тип int, за счет использования символьной формы записи для представления целочисленных значений. Например, если система поддерживает 4-байтовый int, в С можно поступить следующим образом:

int х = 'ABCD'; /* нормально для 4-байтового int в С, но не в C++ */

Смысл ' ABCD' заключается в том, что это 4-байтовое значение int, в котором первый байт хранит символьный код буквы А, второй — символьный код В и т.д. Обратите внимание, что 'ABCD' существенно отличается от "ABCD". Первое значение — это просто причудливый способ написания значения int, но второе — это строка, которая соответствует адресу 5-байтового участка памяти.

Рассмотрим следующий код:

int х = 'ABCD';

char с = 'ABCD';

printf ("%d %d %c %c\n", x, 'ABCD', c, 'ABCD');

Справочные материалы 913

В нашей системе этот код генерирует такой вывод:

1094861636 1094861636 D D

Данный пример иллюстрирует, что если трактовать 'ABCD' как int, то это будет 4-байтовое целое значение, но если трактовать его как char, то программа обращает внимание только на последний байт. Попытка вывода 'ABCD' со спецификатором формата %s в нашей системе приводит к аварийному завершению программы, потому что числовое значение 'ABCD' (1094861636) выходит за рамки допустимых адресов.

Смысл применения значений, подобных 'ABCD', заключается в том, что так можно установить каждый байт в int независимым образом, поскольку каждый символ в точности соответствует одному байту. Однако более удачный подход, который не зависит от конкретных кодов символов, предусматривает использование для целочисленных констант шестнадцатеричных значений, учитывая тот факт, что каждая пара шестнадцатеричных цифр соответствует одному байту. Этот прием обсуждался в главе 15. (Ранние версии С не предоставляли шестнадцатеричной системы записи, так что, по всей видимости, сначала был разработан прием с многосимвольными константами.)

Модификатор const

В С глобальные идентификаторы const имеют внешнее связывание, но в C++ — внугреннее связывание. Другими словами, объявление в C++

const double PI = 3.14159; эквивалентно следующему объявлению в С:

static const double PI = 3.14159;

при условии, что оба они находятся вне функций. Правила C++ нацелены на то, чтобы упростить применение const в файлах заголовков. Если константа имеет внугреннее связывание, то каждый файл, включающий заголовок, получает собственную копию константы. Если же константа имеет внешнее связывание, то в одном файле должно присутствовать определяющее объявление, а во всех остальных файлах должно использоваться ссылочное объявление с ключевым словом extern.

Кстати, в C++ ключевое слово extern может применяться для обеспечения внешнего связывания значения const, поэтому оба языка позволяют создавать константы с внешним и внутренним связыванием. Разница состоит лишь в том, какой вид связывания используется по умолчанию.

Одно дополнительное свойство ключевого слова const в C++ заключается в том, что оно может применяться для объявления размера обычного массива:

const int ARSIZE = 100;

double loons[ARSIZE]; /* в C++ это тоже, что и double loons[100]; */

Такое же объявление можно делать и в С99, но это приведет к созданию массива переменной длины.

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

Интервал:

Закладка:

Сделать

Похожие книги на «Язык программирования C. Лекции и упражнения (6-е изд.) 2015»

Представляем Вашему вниманию похожие книги на «Язык программирования C. Лекции и упражнения (6-е изд.) 2015» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Отзывы о книге «Язык программирования C. Лекции и упражнения (6-е изд.) 2015»

Обсуждение, отзывы о книге «Язык программирования C. Лекции и упражнения (6-е изд.) 2015» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x