Переменные. В математике с понятием переменной связывают некоторый именованный объект, который может принимать одно из допустимого множества значений.
В математике с понятием переменной связывают некоторый именованный объект, который может принимать одно из допустимого множества значений.
В программировании термин переменная означает область оперативной памяти, в которой хранятся данные определенного типа. У переменной есть имя и значение. Имя переменной можно рассматривать как адрес первого байта области памяти, в которой она хранится. Знание этого адреса дает возможность пользователю изменять значение переменной в процессе выполнения программы.
Константам тоже выделяются необходимые ячейки памяти, однако их адреса пользователю неизвестны. Поэтому значения констант нельзя изменять в процессе выполнения программы.
Таким образом, понятие переменной употребляется для обозначения величины, которая при работе программы может принимать различные значения. Каждая переменная должна иметь свое имя-идентификатор. Имена переменных программист выбирает сам, руководствуясь следующими правилами:
- имя переменной должно отражать ее смысл, то есть то, что с помощью этой переменной вычисляется,
- не допускается совпадение имени переменной со служебными словами и именами функций,
- в имени можно использовать буквы латинского алфавита, цифры и знак подчеркивания,
- имя должно начинаться с буквы,
- совпадающие имена, состоящие из строчных и прописных букв, считаются различными: name и NAME – различные имена.
Переменные в Си могут иметь один из трех стандартных типов:
int - целый,
float - вещественный,
char - символьный.
Диапазон допустимых значений переменных совпадает с диапазоном допустимых значений констант того же типа:
int: -32768 … +32767,
float: ±3,4×10-38…±3,4×10+38,
char: 0 … 255.
Кроме этих основных типов можно использовать следующие типы переменных:
long: -2 147 483 648 … +2 147 483 647,
double: ±1,7×10-308…±1,7×10+308,
и их беззнаковые аналоги:
unsigned int:0 … 65535,
unsigned long:0 … 4 294 967 295.
Перед своим использованием любая переменная должна быть описана (объявлена): указан класс памяти, тип и имя переменной, а также по возможности инициализирована – ей присваивается начальное значение.
Самое простое описание включает в себя тип переменной и ее имя:
int i,j,k; //переменные i, j, k – целого типа
float x,y; //переменные x, y – вещественного типа
char a; //переменная a – символьного типа
Желательна инициализация переменных при их описании:
int i=1, j=0, k=2;
float x=0.25, y=-1.5;
char a=’W’;
Если при описании переменной использован модификатор const, то это означает, что значение переменной нельзя изменять в программе. Такую переменную называют именованнойконстантой. Она обязательно должна быть инициализирована:
const int i=1; //именованная целая константа i
const float x=0.25; //именованная вещественная константа x
const char a=’W’; //именованная символьная константа a
Класс памяти определяет время жизни и область видимости переменной:
auto - автоматическая переменная. Память под нее выделяется в стеке и при необходимости инициализируется каждый раз при выполнении оператора, содержащего ее описание. Освобождение памяти происходит при выходе из блока, в котором описана переменная. Время ее жизни – от момента описания до конца блока. Для локальных (описанных внутри блока) переменных спецификатор auto применяется по умолчанию, поэтому задавать его явным образом смысла не имеет,
extern - внешняя переменная. Эта переменная определяется в другом месте программы (в другом файле или дальше по тексту программы). Используется для создания переменных, доступных во всех модулях программы, в которых они объявлены. Если переменная в этом же описании инициализируется, то спецификатор extern игнорируется,
static - статическая переменная. Время ее жизни – постоянное. Инициализируется один раз при первом выполнении оператора, содержащего описание переменной. В зависимости от расположения оператора описания статические переменные могут быть глобальными (описаны вне любого блока, область их действия – весь файл, в котором они описаны) и локальными (описаны внутри блока). Глобальные статические переменные видны только в том модуле, в котором они описаны,
register - регистровая переменная. Память для нее выделяется в регистрах процессора. Если такой возможности у компилятора нет, переменные обрабатываются как auto:
int a; //глобальная переменная a
void main() //заголовок головной программы
{ //начало блока головной программы
int b=1; //локальная переменная b
extern float x;//переменная x определена в другом месте
static int c=0;//локальная статическая переменная c
register char d=’W’; //регистровая переменная d
a=1; //присваивание значения глобальной переменной a
int a; //описание локальной переменной a
//с этого момента и до конца блока действует
//только локальная переменная a
a=0; //присваивание значения локальной переменнойa
. . . . . . . . .
Дата добавления: 2015-10-19; просмотров: 677;