Основные понятия языка С
Компилятор GCC
53
Необходимо понимать, что ch — это не переменная типа char, а
указатель на переменную данного типа, это совершенно разные вещи. Тип
данных, на который указывает указатель (в данном случае это char),
называется базовым типом указателя. Сам указатель является переменной,
содержащей адрес объекта базового типа. Компилятор учтет размер
указателя в архитектуре компьютера и выделит для него
необходимое
количество байтов, чтобы в указатель поместился адрес. Базовый тип
указателя определяет тип объекта, хранящегося по этому адресу.
Операция определения размера sizof
Унарная операция sizeof, выполняемая во время компиляции
программы, позволяет определить длину операнда в байтах.
Оператор sizeof очень полезен для улучшения переносимости программ,
так как переносимость существенно зависит от размеров встроенных типов
данных. Оператор sizeof выполняется во время трансляции, его результат в
программе рассматривается как константа.
Оператор последовательного вычисления: оператор "запятая"
Оператор "запятая" связывает воедино несколько выражений. При
вычислении левой части оператора "запятая" всегда подразумевается, что она
имеет тип void. Это значит, что выражение, стоящее справа после оператора
"запятая", является значением всего разделенного запятыми
выражения.
Например, оператор
x = (y=3, y+1);
сначала присваивает у значение 3, а затем присваивает х значение 4. Скобки
здесь обязательны, потому что приоритет оператора "запятая" меньший, чем
оператора присваивания.
В операторе "запятая" выполняется последовательность операций. Если
этот оператор стоит в правой части оператора присваивания, то его
результатом всегда является выражение, стоящее последним в списке.