Программирование >>  Дополнительные возможности наследования 

1 ... 27 28 29 [ 30 ] 31 32 33 ... 265


10 11 12 13 14 15 16 17 18 19 20 21 22

#include <iostream,h>

float Convert(float);

int mainO

float TempFer; float TempCel;

cout << Please enter the temperature in Fahrenheit:

cin >> TempFer;

TempCel = Convert(TempFer);

cout << \ nHeres the temperature in Celsius: ; cout TempCel endl; return 0;

float Convert(float Fer) {

float Cel;

Cel = ((Fer - 32) * 5) / return Cel;

>

Обычно с использованием переменных в функциях не возникает больших проблем, если ответственно подходить к присвоению имен и следить за тем, чтобы в пределах одной функции не использовались одноименные переменные.

ГлоОальные переменные

Переменные, определенные вне тела какой-либо функции, имеют глобальную область видимости и доступны из любой функции в программе, включая main().

Локальные переменные, имена которых совпадают с именами глобальных переменных, не изменяют значений последних. Однако такая локальная переменная скрывает глобальную переменную. Если в функции есть переменная с тем же именем, что и у глобальной, то при использовании внутри функции это имя относится к локальной переменной, а не к глобальной. Это проиллюстрировано в листинге 5.3.

Дцсшццв 5.3. Двмрцсшрацця цспвдьзвввнип вдоОвдьпых U дакадьных пврвмвнных

2 3 4 5 6 7 8 9

10 11

Sinclude <iostream,h>

void myFunctionO; прототип

int X = 5, у = 7; глобальные переменные

int mainO

cout x from main: x \ n ;

cout y from main: у \ n\ n ; myFunctionO;

cout Back from myFunction!\ n\ n ;



12 13 14 15 16 17 18 19 20 21 22 23

cout x from main: x \ n ; cout << y from main: << у << \ n ; return 0;

void myFunctionO {

int у = 10;

cout << x from myFunction: << x << \ n ; cout << y from myFunction: << у << \ n\ n

X from main: 5 у from main: 7

X from myFunction: 5 у from myFunction: 10

Back from myFunction!

X from main: 5 у from main: 7

Эта простая профамма иллюсфирует несколько ключевых моментов, связан-1*((И1.(! 1м.ш jjyx с использованием локальных и глобальных переменных, на которых часто спотыкаются начинающие программисты. В сфоке 4 объявляются две глобальные переменные - X и у. Глобальная переменная х инициализируется значением 5, глобальная переменная у - значением 7.

В строках 8 и 9 в функции main() эти значения выводятся на экран. Обратите внимание, что хотя эти переменные не объявляются в функции main(), они и так доступны, будучи глобальными.

При вызове в сфоке 10 функции myFunctionO выполнение профаммы продолжается со сфоки 18, а в сфоке 19 объявляется локальная переменная у, которая инициализируется значением 10. В сфоке 21 функция myFunctionO выводит значение переменной х. При этом используется глобальная переменная х, как и в функции main(). Однако в сфОке 22 при обращении к переменной у на экран выводится значение локальной переменной у, в то время как глобальная переменная с таким же именем оказывается скрытой.

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

Глобальные переменные: будьте начекд

Следует отметить, что в С++ глобальные переменные почти никогда не используются. Язык С++ вырос из С, где использование глобальных переменных всегда было чревато возникновением ошибок, хотя обойтись без их применения также было не-



возможно. Глобальные переменные необходимы в тех случаях, когда профаммисту нужно сделать данные доступными для многих функций, а передавать данные из функции в функцию как параметры проблематично.

Опасность использования глобальных переменных исходит из их общедоступности, в результате чего одна функция может изменить значение переменной незаметно для другой функции. В таких ситуациях возможно появление ошибок, которые очень трудно выявить.

На занятии 14 вы познакомитесь с мошной альтернативой использованию глобальных переменных, которая предусмотрена в С++, но недоступна в языке С.

ПооробнББ О локальных переменных

о переменных, объявленных внутри функции, говорят, что они имеют локальную область видимости. Это означает, как упоминалось выше, что они видимы и пригодны для использования только в пределах той функции, в которой определены. Фактически в С++ можно определять переменные в любом месте внутри функции, а не только в ее начале. Областью видимости переменной является блок, в котором она определена. Таким образом, если в теле функции будет блок, выделенный парой фигурных скобок, л в этом блоке объявляется переменная, то она будет доступна только в пределах блока, а не во всей функции, как показано в листинге 5.4.

Аистииг 6.4. Видимость иоканьиых иврвмвииых

2 3 4 5 6 7 8 9

10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27

Листинг 5.4. Видимость переменных, объявленных внутри блока

#include <iostream.h>

void myFuncO;

int mainO {

int x = 5;

cout << \ nin main x is: << x; myFunc():

cout << \ nBack in main, x is: << x; return 0;

void myFuncO

int x = 8:

cout << \ nIn myFunc, local x: << x << endl; {

cout \ nIn block in myFunc, x is: x;



1 ... 27 28 29 [ 30 ] 31 32 33 ... 265

© 2006 - 2025 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки.
Яндекс.Метрика