Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Практикум программирования на С++ под Windows


Служба Рассылок Subscribe.Ru проекта Citycat.Ru

             Практикум программирования на 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


http://subscribe.ru/
E-mail: ask@subscribe.ru

В избранное