Программирование >>  Перегруженные имена функций и идентификаторы 

1 ... 13 14 15 [ 16 ] 17 18 19 ... 210


Последним символом строки всегда является символ нуль 0.

Символ нуль не видим в строковом выражении, но он добавляется как последний элемент, когда строка запоминается. Таким образом, строка abc содержит четыре символа, а не три.

Вызовы функций

Синтаксис:

<expression>(<expression-lils>)

Вызов функции состоит из выражения <expression>, за которым следует список выражений <expression-list>. Значению выражения соответствует адрес функции (например, значение идентификатора функции). Значение каждого выражения из списка выражений (выражения в списке разделены запятыми) соответствует фактическому аргументу функции. Список выражений может быть пустым.

Выражение вызова функции имеет значение и тип своего возврата. Если тип возврата функции void, то и выражение вызова функции имеет тип void. Если возврат из вызванной функции произошел не в результате выполнения оператора return, то значение функции не определено.

Индексные выражения

Синтаксис:

<expression1>[<expression2>]

Здесь квадратные скобки - это терминальные символы. Индексное выражение представляет величину, адрес которой состоит из суммы значений выражения1 <expression1> и выражения2 - <expression2>. Выражение1 - это любой указатель, такой как идентификатор массива, а выражение2 - это целочисленная величина. Выражение2 должно быть заключено в квадратные скобки [].

Индексное выражение обычно используется для ссылок на элементы массива, тем не менее, индекс может появиться с любым указателем.

Индексное выражение вычисляется путем сложения целой величины <expression2> с значением указателя <expression1> c

последующим применением к результату операции разадресации *. Например, для одномерного массива следующие четыре



выражения эквивалентны в предположении, что a - это указатель, а b - это целое.

*(a + b)

*(b + a) b[a]

В соответствии с правилами преобразования типов для операции сложения, целочисленная величина преобразуется к адресному представлению путем умножения ее на размер типа, адресуемого указателем. Например, предположим, что идентификатор line сс1лается на массив величин типа int. Чтобы вычислить выражение line[i], целая величина i умножается на размер типа int. Преобразованное значение i представляет i позиций типа int. Это преобразованное значение складывается с начальным значением указателя line, что дает адрес, который расположен на i позиций типа int от line.

Последним шагом вычисления индексного выражения является операция разадресации, применяемая к полученному адресу. Результатом является значение элемента массива, который позиционирован.

Заметим, что индексное выражение line[0] представляет значение первого элемента массива, так как отсчет смещения ведется от нуля.

Следовательно, такое выражение, как line[5], сс1ается на шестой элемент массива.

Ссылки на многомерный массив

Индексное выражение может быть снова проиндексировано. Синтаксис такого выражения следующий:

<expression1>[<expression2>][<expression3>]...

Данное индексное выражение интерпретируется слева направо. Сначала вычисляется самое левое индексное выражение <expression1>[<expression2>]. Адрес результата сложения <expressin1> и <expression2> имеет смысл адресного выражения, с которым складывается <expression3> и т.д. Операция разадресации осуществляется после вычисления последнего индексного выражения. Однако, операции разадресации не производится, если значение последнего указателя адресует величину типа массив.



Выражения с несколькими индексами ссылаются на элементы многомернтх массивов. Многомерный массив - это массив, элементами которого являются массивы. Например, первым элементом трехмерного массива является массив с двумя измерениями.

Выражения с операциями

Выражения с операциями могут быть унарными, бинарными ии тернарными. Унарное выражение состоит из операнда с предшествующей унарной операцией <unop> или операнда, заключенного в круглые скобки, с предшествующим ему ключевым словом sizeof.

Синтаксис:

<unop><operand> sizeof<operand>

Бинарное выражение состоит из двух операндов, разделенных бинарной операцией <binop>.

Синтаксис:

<operand><binop><operand>

Тернарное выражение состоит из трех операндов, разделенных тернарной операцией ?:

Синтаксис:

<operand> ? <operand> : <operand>

Выражения присваивания используют унарные, бинарные и составные операции присваивания. Унарными операциями присваивания являются инкремент ++ и декремент -- . Бинарная операция присваивания всего одна =. Составные операции присваивания будем обозначать как <compound-assign-ops>. Каждая составная операция присваивания - это комбинация бинарной операции с простой операцией присваивания.

Синтаксис выражений присваивания:

<operand> ++ <operand> ++ <operand> <operand> <operand> = <operand>

<operand> <compound-assignment-ops> <operand>



1 ... 13 14 15 [ 16 ] 17 18 19 ... 210

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика