Главная » iPhone, Objective-C, Программирование для iOS и MacOS » Глобальные и статические переменные Objective-C

0

В этой главе упоминались локальные переменные, существующие только во время выполнения функции. Также существуют переменные, доступные в любой функции и в любое время. Они называются глобальными переменными. Чтобы переменная стала глобальной,  объявите  ее  за  пределами  какой-либо  функции.  Например,  можно

добавить переменную lastTemperature для хранения преобразованной температуры по Цельсию. Включите в программу объявление глобальной переменной:

#include <stdio.h>

#include <stdlib.h>

// Обьявление глобальной переменной float lastTemperature;

float fahrenheitFromCelsius(float cel)

{

lastTemperature = cel;

float fahr = cel * 1.8 + 32.0;

printf("%f Celsius is %f Fahrenheit\n", cel, fahr); return fahr;

}

int main(int argc, const char * argv[])

{

float freezeInC = 0;

float freezeInF = fahrenheitFromCelsius(freezeInC); printf("Water freezes at %f degrees Fahrenheit\n", freezeInF);

printf("The last temperature converted was %f\n", lastTemperature);

return EXIT_SUCCESS;

}

Любая нетривиальная программа состоит из десятков файлов, содержащих разные функции. Глобальные переменные доступны в коде каждого из этих файлов. Иногда совместное использование переменной разными файлами – именно то, что нужно. С другой стороны, доступ к переменной из множества функций способен породить величайшую путаницу. Для решения этой проблемы существуют статические переменные. Статическая переменная, как и глобальная переменная, объявляется за пределами какой-либо функции – но при этом она доступна только в коде того файла, в котором была объявлена. Таким образом, вы получаете все преимущества переменной не локальной, существующей вне каких-либо функций, но при этом избегаете проблем типа «Кто трогал мою переменную?»

Нашу глобальную переменную можно легко преобразовать в статическую, но тик как наша программа состоит из единственного файла main.с, такая замена ни на что не повлияет.

// Объявление статической переменной static float lastTemperature;

И статическим, и глобальным переменным можно присвоить значение при создании:

// Переменная lastTemperature инициализируется 50 градусами static float lastTemperature = 50.0;

Если переменной не было присвоено начальное значение, она автоматически инициализируется  нулем.

В этой главе вы познакомились с функциями. В части III,когда мы займемся Objective-C, вам также встретится термин метод - методы имеют очень, очень много общего с функциями.

Упражнение

Сумма внутренних углов треугольника должна быть равна 180 градусам. Создайте новую программу командной строки С с именем Triangle. Включите в файл main.c функцию, которая получает первые два угла и возвращает величину третьего. Вызов функции должен выглядеть так:

#include <stdio.h>

// Add your new function here

int main(int argc, const char * argv[])

{

float angleA = 30.0; float angleB = 60.0;

float angleC = remainingAngle(angleA, angleB); printf("The third angle is %.2f\n", angleC); return 0;

}

В приведенном примере программа должна выдавать следующий результат: The third angle is 90.00

Источник: Аарон Хилегас, «Objective-C. Программирование для iOS и MacOS», 2012 г.

По теме:

  • Комментарии