Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Тема. Типы переменных
ПЛАН
[0.1] Объявление переменных [0.1.1] Локальные переменные [0.1.2] Формальные параметры [0.1.3] Глобальные переменные |
Как уже знаем общий формат инструкции объявления переменных выглядит так:
тип список_первменяых;
Здесь элемент тип означает допустимый в C++ тип данных, а элемент список_переменных может состоять из одного или нескольких имен (идентификаторов), разделенных запятыми. Вот несколько примеров объявлений переменных.
int i, j, k;
char ch, chr;
float f, balance;
double d;
В C++ имя переменной никак не связано с ее типом.
Согласно стандарту C++ первые 1024 символа любого имени (в том числе и имени переменной) являются значимыми. Это означает, что если два имени различаются хотя бы одним символом из первых 1024, компилятор будет рассматривать их как различные имена.
Как уже видели, тип void используется для объявления функции, которая не возвращает значения. Другие возможности использования типа void рассматриваются позже.
Переменные могут быть объявлены внутри функций, в определении параметров функций и вне всех функций. В зависимости от места объявления они называются локальными переменными, формальными параметрами и глобальными переменными соответственно. Кратко рассмотрим каждый тип в отдельности.
Переменные, которые объявляются внутри функции, называются локальными. Их могут использовать только инструкции, относящиеся к телу функции. Локальные переменные неизвестны внешним функциям.
Рассмотрим пример.
#include <iostream>
using namespace std;
void func();
---------------------------------------------------------
int main()
{
int x; // Локальная переменная для функции main()
х = 10;
func();
cout << “\n";
coufc << x; // Выводится число 10
return 0;
}
----------------------------------------------------------
void func()
{
int x; // Локальная переменная для функции func()
х = -199;
cout << x; // Выводится число -199
}
Локальная переменная известна только функции, в которой она определена.
В этой программе целочисленная переменная с именем х объявлена дважды; сначала в функции main (), а затем в функции func (). Но переменная х из функции main() не имеет никакого отношения к переменной х из функции func (). Другими словами, изменения, которым подвергается переменная х из функции func(), никак не отражаются на переменной х из функции main(). Поэтому приведенная выше программа выведет на экран числа -199 и 10.
В C++ локальные переменные создаются при вызове функции и разрушаются при выходе из нее. То же самое можно сказать и о памяти, выделяемой для локальных переменных: при вызове функции в нее записываются соответствующие значения, а при выходе из функции память освобождается. Это означает, что локальные переменные не поддерживают своих значений между вызовами функций. (Другими словами, значение локальной переменной теряется при каждом возврате из функции.)
В некоторых литературных источниках, посвященных C++, локальная переменная называется динамической или автоматической переменной. Но в этой книге мы будем придерживаться более распространенного термина локальная переменная.
Формальный параметр это локальная переменная, которая получает значение аргумента, переданного функции*
Как отмечалось ранее, если функция имеет аргументы, то они должны быть объявлены. Их объявление осуществляется с помощью формальных параметров. Как показано в следующем фрагменте, формальные параметры объявляются после имени функции, внутри круглых скобок.
int fund (int first, int last, char ch)
{
.
.
.
}
Здесь функция fund() имеет три параметра с именами first, last и ch. С помощью такого объявления сообщаем компилятору тип каждой из переменных, которые будут принимать значения, передаваемые функции. Несмотря на то что формальные параметры выполняют специальную задачу получения значений аргументов, передаваемых функции, их можно также использовать в теле функции как обычные локальные переменные. Например, можем присвоить им любые значения или использовать в каких-нибудь (допустимых для C++) выражениях. Но, подобно любым другим локальным переменным, их значения теряются по завершении функции.
Глобальные переменные известны всей программе.
Чтобы придать переменной "всепрограммную” известность, ее необходимо сделать глобальной. В отличие от локальных, глобальные переменные хранят свои значения на протяжении всего времени жизни (времени существования) программы. Чтобы создать глобальную переменную, ее необходимо объявить вне всех функций. Доступ к глобальной переменной можно получить из любой функции.
В следующей программе переменная count объявляется вне всех функций. Ее объявление предшествует функции main(). Но ее с таким же успехом можно разместить в другом месте, главное, чтобы она не принадлежала какой-нибудь функции. Помните: поскольку переменную необходимо объявить до ее использования, глобальные переменные лучше всего объявлять в начале программы.
#include <iostream>
using namespace std;
void func1() ;
void func2();
int count; // Это глобальная переменная
------------------------------------------------------------
int main()
{
int i; // Это локальная переменная.
for(i=0; i<10; i++)
{
count = i * 2;
funcl();
}
return 0;
}
------------------------------------------------------------
void func1()
{
cout << "count: " << count; // Обращение к глобальной переменной
cout << “\n”; // Вывод символа новой строки.
func2();
}
----------------------------------------------------------
void func2() {
int count; // Это локальная переменная.
for(count=0; count<3; count++} cout << ' ';
}
Несмотря на то что переменная count не объявляется ми в функции main(), ни в функции func1(), обе они могут ее использовать. Но в функции func2() объявляется локальная переменная count. Здесь при обращении к переменной count выполняется доступ к локальной, а не к глобальной переменной. Важно помнить, что, если глобальная и локальная переменные имеют одинаковые имена, все ссылки на “спорное" имя переменной внутри функции, в которой определена локальная переменная, относятся к локальной, а не к глобальной переменной.
PAGE 1