Сводка: квалификаторы
Ключевые слова
Для квалификации переменных применяются следующие ключевые слова:
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 ) ).
Операторы
Оператор — это команда компьютеру. Любое выражение, за которым следует точка с запятой, формирует оператор, хотя и не обязательно осмысленный. Операторы могут быть простыми или составными. Простые операторы завершаются точкой с запятой, как показано в следующих примерах:
printf ("%d\n", toes);
while (toes < 20) toes = toes + 2;
; /* ничего не делает */
(Формально стандарт относит объявления к отдельной категории, а не объединяет их с операторами.)
Составные операторы, или блоки, состоят из одного или более операторов (каждый из которых сам может быть составным), заключенных в фигурные скобки. Примером может служить следующий оператор while:
while (years < 100)
{
wisdom = wisdom + 1;
printf("%d %d\n", years, wisdom);