|
Программирование >> Перегруженные имена функций и идентификаторы
Последним символом строки всегда является символ нуль 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>
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |