×
Traktatov.net » Язык программирования C [Лекции и упражнения, 6-е изд.] » Читать онлайн
Страница 524 из 557 Настройки

Сводка: квалификаторы

Ключевые слова

Для квалификации переменных применяются следующие ключевые слова:

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);