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

0

В языке С есть стандартная функция modf(), которая получает значение dоublе

и возвращает целую и дробную части числа. Например, у числа 3,14 целая часть равна

3, а дробная – 0,14.

Вызывая функцию modf(), вы хотите получить обе части числа. Однако функция С может возвращать только одно значение. Как функция modf()

вернет два числа вместо одного?

При вызове modf() следует указать адрес, по которому будет сохранено одно из чисел. А если говорить конкретно, функция возвращает дробную часть числа и копирует целую часть по указанному вами адресу. Создайте новый проект – программу командной строки С с именем PBR.

Отредактируйте содержимое main.c:

#include <stdio.h>

#include <math.h>

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

{

double pi = 3.14; double integerPart; double fractionPart;

// Адрес integerPart передается в аргументе fractionPart = modf(pi, &integerPart);

// Определение значения, хранящегося в integerPart

printf("integerPart = %.0f, fractionPart = %.2f\n", integerPart, fractionPart);

return 0;

}

Такой механизм передачи данных называется передачей по ссылке. Иначе говоря, вы передаете адрес («ссылку»), а функция записывает по нему свои данные.

Рис. 9,1. Состояние стека при возврате из modf()

Представьте. что вы выдаете поручения шпионам. Вы говорите: «Мне нужны фотографии министра финансов с его новой подружкой. У статуи ангела в парке находится тайник – короткая железная труба. Когда фотографии будут готовы, сверните и оставьте в тайнике. Я заберу их во вторник

после обеда».

Функция modf() тоже работает по принципу тайника. Вы говорите ей, что нужно сделать и где оставить результаты, чтобы вы могли позднее забрать их, когда вам это будет удобно. Только вместо железной трубы вы передаете адрес памяти, по которому функция должна оставить свой результат.

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

По теме:

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