Практикум программирования на C++ под Windows
comp.soft.prog.cppwin
Выпуск #7
15/10/2000
*** ВВЕДЕНИЕ В C++. ПРОДОЛЖЕНИЕ *****************************************
Для тех, кого интересует история - взгляните на History of the Windows API:
http://www.iseran.com/Win32/FAQ/history.html
Просто забавно. Такое ощущение, что Windows создавали под Word for Windows,
а не наоборот... Возможно, позже я переведу и представлю вам этот текст.
Массивы
Производные типы в C/C++ образуются из базовых при помощи конструкторов
"указатель", "ссылка", "массив" и "функция". Признаком массива служат
квадратные скобки:
int a; //Единичная переменная
double b[10]; //Десять значений
В скобках указывается количество элементов. Нумерация всегда производится
с нуля. Т.о. в массиве b - 10 элементов с индексами от 0 до 9.
Обращение к элементу также происходит через скобки:
int a = b[c-2];
Для перебора элементов можно использовать цикл for:
for (int i = 0; i < 10; i++) //Обнуление элементов массива b
b[i] = 0;
Процесс сборки программы
Процесс создания программы в C/C++ (как и во многих других языках)
состоит из двух этапов:
1. Компиляция исходных модулей (.C,.CPP,.RC и т.д.) в объектные модули
(.OBJ). Объектный модуль содержит готовый код программы с точностью
до ссылок на имена функций, переменных и пр., лежащих в других модулях.
Эти ссылки остаются неопределенными.
2. Линковка - объединение объектных модулей в единый исполняемый модуль
(.EXE или .DLL) с доопределением перекрестных ссылок. На этом этапе
также подключаются ресурсы программы.
Модули, которые нужно перекомпилировать, среда программирования определяет
по дате и времени последней модификации файла. По этой причине важно следить
за корректностью времени, установленного на рабочей машине.
Типы в Win32
Программный интерфейс Windows имеет свою систему типов, надстроенную над
типами языка. Сделано это отчасти для совместимости различных версий,
а отчасти - для фиксации размеров данных. Краткая таблица типов (размер типа
указан для Win32):
Тип Размер Знак Тип в языке C++
BYTE 8 бит без знака unsigned char
WORD 16 бит без знака unsigned short
UINT 32 бит без знака unsigned int
DWORD 32 бит без знака unsigned long
LONG 32 бит знаковое long
BOOL 32 бит long
HANDLE 32 бит void*
Тип BOOL используется для преставления булевых значений, флажков - да/нет,
есть/нет, включен/выключен. При инициализации булевых переменных
используются константы TRUE (истина) и FALSE (ложь), однако сравнивать
с ними нельзя.
Тип HANDLE (хэндл, _дескриптор_) и подобные ему (например, HWND, HINSTANCE,
HDC и т.д.) служат для описания переменных, хранящих ссылку на какой-либо
системный ресурс (окно, экземпляр приложения, контекст рисования
соответственно). Дескриптор считается пустым (не ссылающимся на ресурс),
если его значение равно NULL.
Строки
Строка в C - это любой массив символов, признаком конца строки считается символ
с кодом 0. Длина строки нигде не хранится, максимальная длина строки ничем не
ограничена. Этот массив может располагаться как в статической, так и в
автоматической или динамической памяти.
//Строка в локальной переменной
char buf[20]; //Буфер под строку
buf = '\0'; //Очистка строки buf: она становится пустой
//Строка в динамической памяти
char pStr = malloc(20); //Буфер в динамической памяти
strcpy(pStr, "Просто строка.");
free(pStr); //Освобождение памяти
Поскольку указатель на тип char может рассматриваться как массив
типа char, то при передаче строк в качестве параметров используется тип char*.
Длина строки определяется функцией strlen, действие которой состоит в подсчете
числа символов строки, не считая оконечного ноля.
Символ '\', используемый в строках, имеет специальный смысл: он начинает т.н.
Esc-последовательность - последовательность символов, которая в реальной строке
заменяется одним символом:
\n Новая строка
\r Перевод каретки
\t Табуляция
\\ Символ '\'
\### Символ, заданный восьмеричным кодом (# - цифра 0..7), например
\0 Символ с кодом 0, признак конца строки
\x0## Символ, заданный шестнадцатиричным кодом (# - 0..9,a..f)
Другие источники информации
Насколько я вижу, среди моих подписчиков есть множество людей уже знающих
C/C++ и даже Win32. Им, как впрочем и всем остальным, я предлагаю обратить
внимание на дружественную рассылку:
Программирование на Visual С++
comp.prog.visualc
http://subscribe.ru/catalog/comp.prog.visualc
Visual C++, MFC и все, что с этим связано. Ответы на часто задаваемые
вопросы, трюки, хитрости, советы - все это и многое другое ожидает вас на
страницах этой рассылки.
*************************************************************************
Количество подписчиков: 5576
Архив Рассылки
Никита Зимин
mailto:Nikita_Zeemin@mail.ru?subject=cppwin