Стивен Прата - Язык программирования C. Лекции и упражнения (6-е изд.) 2015
- Название:Язык программирования C. Лекции и упражнения (6-е изд.) 2015
- Автор:
- Жанр:
- Издательство:Вильямс
- Год:0101
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Стивен Прата - Язык программирования C. Лекции и упражнения (6-е изд.) 2015 краткое содержание
Язык программирования C. Лекции и упражнения (6-е изд.) 2015 - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
Сводка: объявление простой переменной
1. Выберите необходимый тип.
2. Выберите имя для переменной.
3. Используйте следующий формат оператора объявления:
специфика тор- типа имя-переменной;
спецификатор-типа формируется из одного или более ключевых слов. Вот некоторые примеры:
int erest;
unsigned short cash;
4. Чтобы объявить несколько переменных одного и того же типа, отделяйте их имена друг от друга запятыми:
char ch, init, ans;
5. В операторе объявления переменную можно инициализировать:
float mass = 6.0Е24;4
Справочные материалы 841
Сводка: классы хранения Ключевые слова
auto, extern, static, register, _Thread_local (C11)
Общий комментарий
Класс хранения переменной определяет ее область видимости, связывание и продолжительность хранения. Класс хранения задается как местом ее определения, так и указанными в определении ключевыми словами. Переменные, определенные вне всех функций, являются внешними, имеют область видимости в пределах файла, внешнее связывание и статическую продолжительность хранения. Переменные, определенные внутри какой-то функции, являются автоматическими, если только не использовано одно из других ключевых слов. Они характеризуются областью видимости в пределах блока, отсутствием связывания и автоматической продолжительностью хранения. Переменным, определенным с ключевым словом static внутри функции, присуща область видимости в пределах блока, отсутствие связывания и статическая продолжительность хранения. Переменные, определенные с ключевым словом static вне функции, имеют область видимости в пределах файла, внутреннее связывание и статическую продолжительность хранения. В стандарте С11 появился новый квалификатор класса хранения: _Thread_local. Объявленный с этим квалификатором объект имеет потоковую продолжительность хранения, т.е. он существует в течение времени жизни потока, в котором объявлен, и инициализируется, когда поток начинается. Таким образом, объект подобного рода является локальным по отношению к потоку.
Свойства
Ниже представлена сводка по свойствам классов хранения.
Обратите внимание, что ключевое слово extern применяется только для повторного объявления переменной, которая была определена внешне где-то в другом месте. Объявление переменной за пределами функции делает ее внешней.
842 Приложение Б
В дополнение к этим классам хранения язык С предоставляет выделенную память. Такая память выделяется вызовом одной из функций семейства malloc(), возвращающей указатель, который может быть использован для доступа к памяти. Память остается выделенной до тех пор, пока не будет вызвана функция free() либо не завершится работа программы. Доступ к выделенной подобным образом памяти возможен из любой функции, которая располагает соответствующим указателем. Например, функция может передать значение указателя другой функции, давая ей возможность доступа к памяти.
Сводка: квалификаторы
Ключевые слова
Для квалификации переменных применяются следующие ключевые слова:
const, volatile, restrict
Общий комментарий
Квалификатор определенным образом ограничивает использование переменной. Переменная const после инициализации не может быть изменена. Компилятор не может предполагать, что переменная volatile не изменяется каким-то внешним действием, таким как аппаратное обновление. Указатель, квалифицированный с помощью restrict, понимается как обеспечивающий единственный доступ (в определенной области видимости) к блоку памяти.
Примеры
Объявление
const int joy = 101;
устанавливает, что значение joy зафиксировано как 101.
Объявление
volatile unsigned int incoming;
устанавливает, что значение переменной incoming может измениться между несколькими ее упоминаниями в программе.
Объявление
const int * ptr = &joy;
устанавливает, что указатель ptr не может быть использован для изменения переменной joy. Однако указатель может быть переустановлен, чтобы ссылаться на другую ячейку памяти.
Объявление
int * const ptr = &joy;
устанавливает, что указатель ptr не может изменяться, т.е. он может указывать только на joy. Однако он может применяться для изменения значения joy.
Прототип
void simple(const char * s);
устанавливает, что после инициализации формального аргумента s любым переданным функции simple() значением эта функция не может изменять значение, на которое указывает s.
Справочные материалы 843
Прототип
void supple(int * const pi); и эквивалентный ему прототип
void supple(int pi[const]);
устанавливают, что функция supple() не может изменять значение параметра pi. Прототип
void interleave(int * restrict p1, int * restrict p2, int n);
устанавливает, что p1 и p2 являются единственным первичным средством доступа к блокам памяти, на которые они указывают; это подразумевает, что данные два блока не перекрываются.
Раздел IV. Выражения, операторы и поток управления программы
Сводка: выражения и операторы
В языке С выражения представляют значения, а операторы — инструкции, исполняемые компьютером.
Выражения
Выражение — это комбинация операций и операндов. Простейшее выражение — это всего лишь константа или переменная без каких-либо операций, такая как 22 или beebop. Более сложные примеры могут выглядеть так: 55 + 22 и vap=2* (vip+ (vup=4 ) ).
Операторы
Оператор — это команда компьютеру. Любое выражение, за которым следует точка с запятой, формирует оператор, хотя и не обязательно осмысленный. Операторы могут быть простыми или составными. Простые операторы завершаются точкой с запятой, как показано в следующих примерах:
int toes; toes = 12;
printf ("%d\n", toes);
while (toes < 20) toes = toes + 2;
; /* ничего не делает */
(Формально стандарт относит объявления к отдельной категории, а не объединяет их с операторами.)
Составные операторы, или блоки, состоят из одного или более операторов (каждый из которых сам может быть составным), заключенных в фигурные скобки. Примером может служить следующий оператор while:
while (years < 100)
{
wisdom = wisdom + 1;
printf("%d %d\n", years, wisdom);
years = years + 1;
}
844 Приложение Б
Сводка: оператор while
Ключевое слово
Ключевым словом оператора while является while.
Общий комментарий
Оператор while создает цикл, который повторяется до тех пор, пока проверяемое выражение не станет равно false или нулю. Оператор while представляет собой цикл с проверкой условия на входе, решение о выполнении очередной итерации принимается перед выполнением тела цикла. Таким образом, существует возможность, что тело цикла не будет выполнено ни разу. Часть оператор этой формы может быть как простым оператором, так и составным.
Читать дальшеИнтервал:
Закладка: