Скрытие имени переменной.
Область видимости.
Нельзя комбинировать имена, созданные с помощью 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
}