Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Objective-C

Войти
Регистрация
Восстановить пароль
 
4ep
0 / 0 / 0
Регистрация: 23.01.2014
Сообщений: 4
#1

Разыменование Null (книга Аарона Хилегаса) - Objective-C

23.01.2014, 13:06. Просмотров 641. Ответов 2
Метки нет (Все метки)

Изучаю OBJ C по книге Objective c програмиирование для os x и ios 2012г.
на данной странице возник вопрос.

rPtr и thetaPtr это аргументы для указателей,адресов куда в память складывать результат работы функции- в какие переменные типа double. зачем в данном случае проверка на null ?
не понимаю этот момент и мне он кажется ключевым. далее листинг всего кода .
Objective-C
1
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <stdio.h>
#include <math.h>
void cartesianToPolar(float x, float y, double *rPtr, double *thetaptr)
{
    if (rPtr){
      
        *rPtr = sqrt(x*x + y*y);
    }
    if (!thetaptr){
        return;
    }
    float theta;
    if (x == 0.0) {
        if (y == 0.0){
            theta = 0.0;
        }else if(y>0){
            theta = M_PI_2;
        }else{
            theta = - M_PI_2;
        }
    }else{
        theta = atan(y/x);
    }
    *thetaptr = theta;
}
 
int main(int argc, const char * argv[])
{
 
    double pi = 3.14;
    double integerPart;
    double fractionPart;
    // insert code here.
    
    fractionPart = modf(pi, &integerPart);
 
    printf("integerPart = %.0f, fractionPart = %.2f\n",integerPart, fractionPart);
    
    double x = 3.0;
    double y = 4.0;
    double radius;
    double angle;
    
    cartesianToPolar(x, y,&radius, &angle);
    printf("(%.2f,%.2f) becomes (%.2f radians. %.2f)\n",x,y,radius,angle);
    
    return 0;
}
0
Миниатюры
Разыменование Null (книга Аарона Хилегаса)  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.01.2014, 13:06
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Разыменование Null (книга Аарона Хилегаса) (Objective-C):

Блин, для ЧЕГО НУЖНА Функция CREATE TABLE invoice( inv_id INT AUTO_INCREMENT NOT NULL , usr_id INT NOT NULL , prod_id INT NOT NULL , quantity INT NOT - MySQL
Погуглив, так и не смог толком понять. Есть тут ГУРУ по mysql Которые могут на пальцах или на примере показать для чего она нужна. ...

Разыменование - Assembler
Попался непонятный кусок дизасм кода. Скобки разыменовывают, ptr разыменовывает. Тогда ptr дважды разыменовывает? mov r8, rcx; в rcx...

Разыменование итератора - C++
Делаю предикат-функцию поиска внутри вектора,состоящего из экземпляров класса.Решил использовать итераторы.То есть мне нужно обратиться к...

Ссылка и Разыменование в с++ - C++
прошу кто можеть дать видеоурок(или что угодно) на эту тему.я очень затрудняюсь понят это.нужно много примеров из самого примитива до...

Разыменование указателя! - C++
Всем привет, объясните почему и как это работает? int (*pf)(void); int f(void) { static int count ; pf = &amp;f; //...

Разыменование указателя - C++
Есть некий указатель на объект класса? Class1 *ptr = new Class1(); Можно ли эго разыменовать на постоянной основе, так, чтобы не...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
mobidevelop
182 / 182 / 3
Регистрация: 10.01.2013
Сообщений: 596
23.01.2014, 15:16 #2
если rPtr == nil, то *rPtr = smth; генерит exception. Потому как нельзя писать в ячейку памяти с адресом 0.
0
4ep
0 / 0 / 0
Регистрация: 23.01.2014
Сообщений: 4
23.01.2014, 15:34  [ТС] #3
это понятно: что если адреса нет то куда сохранять-> ошибка. меня интересует именно трактовка слов в скриншоте.. т.е. эта проверка больше подходит для других случаев чем для этого кода ? гипотетически функция может быть использована неоднократно с различными аргументами адресов(цикл или массив) и вот там проверка может что-то отсеять? если да то вопрос закрыт. просто я пытаюсь найти причину именно в этом коде зачем нужны такие проверки, а их похоже и нету
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.01.2014, 15:34
Привет! Вот еще темы с ответами:

Указатели и разыменование - C++
Я как то раньше не вдавался в эти подробности, разыменование или нет, просто ставил звездочку и все, и для меня было varOne и *varTwo по...

Разыменование указателя - C++ Builder
Когда мы создали пустой проект и скинули на форму к примеру Edit1; В файле *.h мы увидели в паблишеде TEdit*Edit1; Это означает...

Разыменование указателя this - C++
Здравствуйте, Имеется код с перегрузкой оператора &quot;+&quot;, объясните пожалуйста, что делает эта строка: matrix sum(*this); Весь...

Не работает код: m_web1.Navigate ('gidro.htm',0,0,NULL,NULL); - C++
Друзья помогите начинаюшему значит делаю m_web1.Navigate ('с:\gidro.htm',0,0,NULL,NULL);работает делаю m_web1.Navigate...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru