double arrow

Оператор разрешения области видимости


Скрытие имени переменной.

Область видимости.

Нельзя комбинировать имена, созданные с помощью typedef.

Ключевое слово typedef.

Понятие, объявление и определение.

Файловый ввод - вывод.

1) infile = fopen(“имя”, w);
“Z:\\...\\myfile.txt”;

2) myfile.txt
*.vcproj
*sln
..\\ на уровень выше.

Булевые переменные (тип BOOL).

True =1 False=0
ex. :
bool b=(x<=y);
//b=5 – ошибка
int n=b;
(неявное приведение к типу int)

Старый BOOL – 4 бита
Сейчас BOOL – 1 бит

Программист даёт имена переменным или функциям, а потом использует переменные в выражении или вызове функции. Когда компилятор встречает в тексте программы любое имя, он должен знать, что имеется ввиду под этим именем, поэтому в C использованию любого имени должно предшествовать описание его свойств.

Declaration
Объявлений одного имени может быть сколько угодно, но они должны быть согласованы.
Определение может быть только одно.

extern int iNumber;
float var2;
//объявление + определение
double var3 = 3.14159,
Один тип объявляется через ‘ , ’ :
char var1, var2,var3, var4 = ’ y ’;

typedef тип синоним типа,

typedef unsigned char BYTE;
BYTE var8;
#if defined(_win32)
typedef int int32;
#else
typedef long int 32;
#endif
int32 i=1 - 32 разряда памяти




//typedef long int 32 MY; - НЕЛЬЗЯ
for (int index…)
{
index
}

Виды компоновки программ:

1) Внешняя
external
(все переменные определены вне {} без спецификатора static)
int var1,
int main
{}

2) Внутренняя
internal
(объявление вне {}, но с ключевым словом static )

3) Без компоновки
no linkage
(
не подлежат компоновке)
{int var1;
}

file.cpp
int z;
static int y;
void f1()
{
int x;
static int;
}
void f2()
{
использование y
}
void f3()
{
использование y, z
}

file2.cpp
extern int z;
void f4();
{
использование z;
}

Автоматическая память – все переменные, которые были определены внутри блока, или параметры функции.

{

int i;
}
//i=1

File scope – область видимости для переменной не {} будет видна только в этом файле

#include…
int z;
void main()
{
z=10;

}


Область видимости переменной.

--- namespace;
---function scope;
---void f1(void)
{
label1:
}
void f2(void)
{
label1:
}
---class scope
---область видимости имён параметров прототипа функции.

int ix; //глобальная

void Func ()

{

int ix; //локальная

ix=2;

{

int ix; //локальная

ix=3;

}

}


К скрытому глобальному имени можно обратиться с помощью оператора разрешения области видимости “ :: ”

int ix; // глобальная

void Func ()

{

ix=1;

int ix;

:: ix=50;

обращение к глобальной переменной

ix=4;

}

Void F1 ()

{

ix=20;

}

Пространство имён – namespace.

namespace one { int version=1;}

namespace two { int version=2;}

int main ()

{

int n=one::version; //1

int n1=two:: version; //2

}







Сейчас читают про: