//при помощи функции strcat, мы добавляем к этой строке строку Hello, Global
//Word! с символом переноса на другую строку \n.
mm[0] = \0;
strcat(mm, «Hello, Global Word! \n»);
//Снова объявляем переменную mm, чем скрываем имя глобальной переменной mm.
//Теперь обращаясь к mm, мы обращаемся к локальному имени, указывающему на
//другую область памяти. В эту другую область мы записываем строку Hello,
//Local Word!
char mm[256];
mm[0] = \0;
strcat(mm, «Hello, Local Word! \n»);
//К строке из локальной переменной mm, мы дописываем строку из глобальной
//переменной mm, обращаясь к глобальной переменной при помощи оператора
//разрешения области видимости::
strcat(mm,mm);
mbstowcs(mstr, mm, 256);
szStr = mstr;
}
Комментарии в тексте поясняют действие кода. После запуска программы нужно нажать клавишу 4. На экран будет выведено следующее сообщение:
Hello, Local Word! Hello, Global Word!
Поскольку ошибки, связанные с ненамеренным замещением имен трудно обнаружить, особенно в большой программе, следует придерживаться следующих правил.
? Чем более глобальное имя было создано, тем более описательный характер, позволяющий понять функциональную нагрузку имени и область, оно должно носить.
? Имена из локальной области видимости хорошо делать однобуквенными.
? Чем чаще используется имя, тем короче его надо делать.
? Имя должно отображать смысл использования объекта, а не детали его представления.
? Нужно записывать имена макросов заглавными буквами.
? Следует отделять слова внутри имени символом подчеркивания.
Объекты и lvalue (левые значения)
Когда для хранения тех или иных данных выделяется некоторая непрерывная область памяти, эта операция создает объект. В С++ разработчик может создавать области памяти и хранить там данные, не присваивая этим объектам имен. Но если вы такому объекту все же присваивается имя, то этим создается так называемое lvalue , то есть нечто, что может быть использовано в левой части оператора присваивания. Когда вы создаете переменную, вы создаете модифицируемое lvalue . При создании константы возникает константное lvalue .
Объект, объявленный в функции, создается в момент его определения и живет до выхода из функции. Такого рода объекты называются автоматическими или локальными . Глобальные объекты, а также статические объекты, объявленные в функциях и классах, живут до тех пор, пока не закончится программа.
Объекты, созданные явно при помощи оператора new, уничтожаются оператором delete, и программист непосредственно управляет временем их жизни. Такие объекты называются динамическими .
typedef
Объявление, начинающееся с ключевого слова typedef, вводит новое имя для типа.
typedef char* Pchar;
Эта конструкция создает новое имя для уже имеющегося типа «указатель на символ». Таким образом, ключевое слово typedef позволяет создавать синонимы уже имеющимся типам.
Выражения
Выражения – это операторы, операнды и разделители, определяющие некоторое вычисление и возвращающие значение. В следующем разделе будут рассматриваться основные операторы языка С++, а в этом разделе нужно коснуться приоритета выполнения операторов в выражениях. Правильное понимание того, в каком порядке будут выполняться операторы, поможет избежать многих досадных ошибок, которые не в состоянии обнаружить компилятор. В справочной системе, в разделе, посвященном языку C/C++, есть страница Operator Precedence and Associativity, посвященная этому вопросу. На этой странице указаны практически все операторы языка C++.
Операторы
Операторы – это лексемы, которые производят некоторые вычисления, если их применить к переменным или другим объектам внутри выражения.
Арифметические операторы
Арифметические операторы используются для математических вычислений. Они приведены в табл. 4.1.
Инкремент и декремент могут быть как постфиксными, так и префиксными.
Это демонстрирует следующий фрагмент кода:
int x=1, y=0;
y = x++; //Сначала y получит значение x (1), затем x будет увеличен на 1
y = ++x; //Сначала x будет увеличен на 1, затем полученное значение будет
//увеличено на единицу
Будет иметь смысл и выражение ++x = 5. А вот выражение x++ = 5 не имеет смысла, поскольку мы пытаемся присвоить значение 5 операции инкремента. Таблица 4.1. Арифметические операторы
Битовые операторы
Битовые операторы приведены в следующем списке.
? & – побитовое И. Если оба бита равны 1, то результат тоже будет равен 1, иначе результат будет равен 0.
? | – побитовое ИЛИ. Оператор сравнивает два бита и возвращает 1, если хотя бы один из битов равен 1, иначе результат будет равен 0.
Читать дальше
Конец ознакомительного отрывка
Купить книгу