Партнерка на США и Канаду по недвижимости, выплаты в крипто
- 30% recurring commission
- Выплаты в USDT
- Вывод каждую неделю
- Комиссия до 5 лет за каждого referral
Код, который вы ввели, объявляет три целых переменных:
int iNum1;
int iNum2 ;
int iResult;
Затем объявляются еще две переменные:
int* pNum1;
int* pNum2;
Обратите внимание, что в объявлении использована запись int*. К какому же типу относится переменная pNum1? Можете ли вы сохранить целое значение в pNum1? Нет. В pNum1 вы можете сохранить адрес переменной типа int. Вы должны сохранить в переменной pNum1 число 1000, поскольку 1000 является адресом iNum1. Точно так же вы должны сохранять адрес целого значения и в переменной pNum2. После этого вы присваиваете значения переменным iNum1 и iNum2:
iNum1 = 2;
iNum2 = 2;
Затем вы присваиваете значения переменным pNumI и pNum2:
pNum1 = &iNum1;
pNum2 = &iNum2;
Эти два оператора сохраняют адрес переменной iNum1 в pNum1 и адрес iNum2 в pNum2. Далее вам нужно вычислить результат сложения iNum1 с iNum2. Вы могли бы бы просто написать оператор
iResult = iNum1 + iNum2;
Однако попробуем выполнить вычисления, применив указатели, а не переменные. Например, чтобы вычислить результат сложения iNuml и iNum2, вы пишете следующий оператор:
iResult = *pNum1 + *pNum2;
Когда вы используете указатель с предшествующим символом *, вы извлекаете значение, хранящееся по данному адресу. *pNum1 — это то же, что и *1000, так что программа обращается к значению, хранящемуся по адресу 1000. Поскольку переменная pNum1 была объявлена как int* (а компилятор знает, что целое значение занимает четыре байта памяти), программа обращается к адресам 1000, 1001, 1002 и 1003. Она находит по этим адресам значение 2, так как *pNum1 равно 2. Аналогично, *pNum2 равно 3, поскольку pNum2 равно 1004, а ячейки памяти 1004, 1005, 1006 и 1007 содержат целое со значением. И, наконец, выполняется оператор cout, который выводит на экран значение переменной iResult:
cout << "The result is: " << endl;
cout << iResult;
Сохраните свою работу, выполните компиляцию и компоновку программы. Запустите программу и убедитесь, что значение iResult равно 5 (2+3=5). 5. Соглашение об именах
Если Вы не знакомы с программированием под Windows, некоторые имена и описания, употребляемые в каркасной программе, могут показаться несколько необычными. Однако они соответствуют соглашениям, представленным фирмой Microsoft для программирования под Windows. Для функций используются имена, построенные из глаголов и существительных, причем первые буквы этих слов — заглавные.
Для имен переменных Microsoft предлагает более сложную систему, предусмат ривающую обозначение именуемых типов данных. Для этого используется неболь шой префикс из строчных букв, а собственно имя начинается с заглавной буквы, Типы префиксов представлены в нижеследующей таблице. Откровенно говоря, использование префиксов, обозначающих тип данных, спорно и не всегда адекватно. Большинство Windows-программистов прибегают к такой системе имено вания, но Вы в своих программах можете поступать по своему усмотрению.
Префикс - Тип данных
-------------------------------------------------------
b - Булевский (байт).
с - Символ (байт).
s - Строка ( char или CString ).
dw - Длинное беззнаковое целое (DWORD).
f - 16-битный флаг (битовая карта).
fn - Функция.
h - Дескриптор (handle).
l - Длинное целое (long).
i - Данные типа Int.
lр - Длинный указатель (long pointer).
n - Целое (16 бит).
р - Указатель (pointer).
pt - Точка (два 32-битных целых).
w - Целое без знака (WORD, 16 бит).
sz - Указатель на строку, заканчивающуюся 0 (string>zero).
Ipsz - Длинный указатель на sz (long pointer string zero).
rgb - Длинное целое, содержащее цветовую комбинацию RGB.
6. Структуры в С++
Как вы уже знаете, переменная в C/C++ объявляется следующим образом:
int iMyVariable;
В приведенном операторе iMyVariable объявлена как целая переменная. А вот объявление переменной типа char:
char cMyChar;
Такие типы данных, как int, float, char и long, являются неотъемлемой частью C/C++ и вам не нужно писать никакого кода, чтобы сообщить компилятору о том, что означают эти слова. C/C++ позволяет вам также объ-являть свои собственные, специальные типы данных. В следующем разделе вы узнаете, как объявлять структуры, которые можно отнести к специальным типам данных.
Напишите следующий исходный код:
#include <iostream. h>
#include <string. h>
// Объявление структуры.
struct MYSTRUCTURE
{
char sName[100];
int iAge;
};
void main( void )
{
MYSTRUCTURE MyStructure;
strcpy(MyStructure. sName, "Andy" );
MyStructure. iAge = 13;
cout << "My name is ";
cout << MyStructure. sName;
cout << " and I am ";
cout << MyStructure. iAge;
cout << " years old." << endl;
)
В коде, который вы написали, имеются два оператора #include:
#include <iostream. h>
#include <string. h>
Файл iostream. h включен в код, поскольку в main(void) используется cout. Файл string. h включается потому, что в main(void) используется функция strcpy() (объявленная в файле string. h). Затем вы объявляете структуру:
Struct MYSTRUCTURE
{
char sName[100];
int iAge;
};
Обратите внимание на синтаксис объявления структуры. Оно начинается с ключевого слова struct, за которым следует имя типа-структуры. В этой программе типу структуры присвоено имя MYSTRUCTURE. Затем следует собственно определение структуры, заключенное в фигурные скобки. Не забудьте поставить точку с запятой после закрывающей фигурной скобки. Теперь посмотрите на код внутри фигурных скобок:
char sName[100];
int iAge;
Это означает, что MYSTRUCTURE состоит из строки с именем sName и целого с именем iAge, sName и iAge называются элементами данных структуры; Вы объявили их "Внутри" cтруктуры MYSTRUCTURE. Код в main(void) объявляет переменную с именем MyStructure типа MYSTRUCTURE:
MYSTRUCTORE MyStructure;
Вспомните, что в объявляли переменную iNum1 следующим образом:
int iNum1;
Когда вы объявляете MyStructure, которая будет структурой типа MYSTRUCTURE, рассматривайте переменную MyStructure аналогично переменной iNum1. MyStructure - это имя переменной, а ее типом является MYSTRUCTURE точно так же, как типом переменной iNum1 является int. (Обратите внимание, что по традиции имя структуры составлено из символов нижнего регистра или в нем смешаны символы нижнего и верхнего регистров, как, например, в имени MyStructure, но в имени типа структуры используются только символы верхнего регистра, как, например, в MYSTRUCTURE.)
Следующий оператор в main(void) копирует строку 'Andy' в элемент данных MyStructure. sName:
strcpy ( MyStructure. sName, "Andy" );
В этом операторе обращение к элементу данных sName записано как MyStructure. sName Следующий оператор присваивает значение 13 элементу данных iAge cтруктуры MyStructure: MyStructure. iAge - 13; Затем выполняется ряд операторов вывода cout:
cout << "My name is ";
cout << MyStructure. sName;
cout << " and I am ";
cout << MyStructure. iAge;
cout << " years old." << endl;
Сложив все вместе, мы видим, что программа MyStruct выводит сообщение My name is Andy and I am 13 years old. (Меня зовут Andy и мне 13 лет) 7. Классы в C++.
Одной из основных черт C++, которой нет в С, является концепция классов. По существу, классы - самое важное понятие в C++. Классы похожи на структуры языка С. Однако структура С определяет только данные, ассоциированные с этой структурой. Вот пример структуры С:
struct CIRCLE
{
int radius;
int color;
{;
После того как вы объявили структуру, вы можете использовать ее в пределах вашей функции main (), как показано ниже:
void main()
CIRCLE MyCircle;
...
...
MyCircle. radius = 18;
MyCircle. color = 255; // 255 задает цвет
...
...
}
Со структурой MyCircle (представляющей окружность) ассоциируются данные radius и color (радиус и цвет). Класс в C++, с другой стороны, имеет как ассоциированные с ним данные, так и функции. Данные класса называются элементами данных, а функции класса - элементами-функциями. Следовательно, в программе, которая использует классы, можно написать следующий код:
MyCircle. radius = 20;
MyCircle. color = 255;
MyCircle. DisplayCircle() ;
Первые два оператора присваивают значения элементам данных MyCircle radius и color; третий оператор вызывает функцию-элемент DisplayCircle() для вывода окружности MyCircle. MyCircle называется объектом класса circle. Ваша программа может объявить другой объект с именем HerCircle класса circle следующим образом:
CIRCLE HerCircle;
Следующие операторы присваивают значения элементам данных HerCircle radius и color:
HerCircle. radius = 30;
HerCircle. color = 0;
Затем вы можете использовать функцию-элемент DisplayCircie () для вывода окружности HerCircle:
HerCircle. DisplayCircle();
Объявление класса
Перед тем как работать с классом, ваша программа должна его объявить (так же как перед работой со структурой mystructure вы должны были объявить ее элементы данных). В данном разделе вы познакомитесь с синтаксисом объявления класса. Вы будете и дальше практиковаться с классом circle:
class Circle (
public:
Circle () ;
void SetRadius(void) ;
void GetRadius(void) ;
~Circle () ;
private:
void CalculateArea(void);
int radius;
int color;
};
Объявление класса имеет следующее строение:
class Circle {
...
...
Здесь вы вводите объявление класса
...
...
};
Ключевое слово class показывает компилятору, что все находящееся в фигурных скобках ({}) принадлежит объявлению класса. (Не забывайте ставить точку с запятой в конце объявления.) Объявление класса содержит объявление элементов данных (например, int radius) и прототипы функций-элементов класса. В объявлении класса circle содержатся следующие элементы данных:
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |


