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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.87
OVERPOWER8
19 / 19 / 1
Регистрация: 29.11.2009
Сообщений: 224
#1

Как передать функции значение int? - C++

06.02.2010, 02:35. Просмотров 1937. Ответов 16
Метки нет (Все метки)

Пытаюсь передать функции значение int, но не получается.
Синтаксически все правильно, но не компилируется. Как сделать так, шоб работало, НЕ меняя *& ?

Вот ошибка:
Bash
1
2
3
test.cpp: In function ‘int main()’:
test.cpp:20: error: invalid initialization of reference of type ‘int*&’ from expression of type ‘int’
test.cpp:4: error: in passing argument 2 of ‘bool Factor(int, int*&, int*&)
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
#include <iostream>
using namespace std;
 
bool Factor(int number, int* &pSquared, int* &pCubed);
 
int main()
{
    bool error;
    
    int number, squared, cubed;
    number = 18;
    
    error = Factor(number, squared, cubed);
    
    if(!error)
    {
        cout << "number: " << number << endl;
        cout << "squared: " << squared << endl;
        cout << "cubed: " << cubed << endl;
    }
    
    return 0;
}
 
bool Factor(int number, int* &pSquared, int* &pCubed)
{
    if(number > 20)
        return true;
    else
    {
        *pSquared = number*number;
        *pCubed = number*number*number;
        return false;
    }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.02.2010, 02:35
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как передать функции значение int? (C++):

Как передать 0 в функцию типа f (int, int&) - C++
Подскажите, почему при повторных вызовах f остается предыдущее значение S? Т.е. не обнуляется в теле f - {...s=0...} и как его обнулить?...

Как передать значение из функции - C++
Всем доброе время суток! Такой вопрос, у меня есть функция, с неё нужно достать значение и передать его на вывод в chart, никак не...

Как передать значение из одной функции в другую? - C++
Как передать значение s из функции main() в функцию poisk()? Как передать значение i из функции poisk() в функцию main()? Если...

как с помощю ссылки передать с функции значение F - C++
как с помощю ссылки передать с функции значение F (строка21-22) в main на вывод(строка51) вместо X?? #include&lt;iostream&gt; ...

Передать массив чисел типа Int функции - C++
Всем привет. Столкнулся с проблемой передачи числового массива функции. Этот код изменяет исходный массив. Как сделать так, чтобы при...

Как передать значение функции класса в другую функцию? - C++
имеется класс class Test { public: int getB() { return B; } void setB(int b) { B = b; } private: ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
HIMen
4129 / 1378 / 39
Регистрация: 12.04.2009
Сообщений: 2,346
06.02.2010, 02:40 #2
убери все звездочки
OVERPOWER8
19 / 19 / 1
Регистрация: 29.11.2009
Сообщений: 224
06.02.2010, 02:45  [ТС] #3
>> HIMen

Ты не понял, надо чтобы:
1. функция Factor работала с указателями
2. Передавать функции 3 значения int.
HIMen
4129 / 1378 / 39
Регистрация: 12.04.2009
Сообщений: 2,346
06.02.2010, 02:48 #4
Это ты определись что передавать: сcылки, указатели, указатели на ссылки (оО) или int?
Мне кажется, тебе нужно ссылки --- удали все звездочки
OVERPOWER8
19 / 19 / 1
Регистрация: 29.11.2009
Сообщений: 224
06.02.2010, 02:51  [ТС] #5
>> HIMen

Надо передать функции 3 значения типа int!

Функция принимает 3 значения: int, и два указателя на адресы переменных.
С двумя последними значениями функция должна работать как с указателями.

Прототип функции:
Factor(int, int* &, int* &);

Вызов функции:
int Var1, Var2, Var3;
Factor(Var1, Var2, Var3);
HIMen
4129 / 1378 / 39
Регистрация: 12.04.2009
Сообщений: 2,346
06.02.2010, 02:56 #6
на с++ не пишу, но помню что передача параметров бывает двух типов:
1. по значению (происходит копирование переменной)
2. по ссылке (переменная изменяется)
В твоем очень странном коде, надо передавать по ссылке.

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
#include <iostream>
using namespace std; 
bool Factor(int number, int &pSquared, int &pCubed); 
int main()
{
    bool error;        
    int number, squared, cubed;
    number = 18;        
    error = Factor(number, squared, cubed);        
    if(!error)
    {
        cout << "number: " << number << endl;
        cout << "squared: " << squared << endl;
        cout << "cubed: " << cubed << endl;
    }
    system("pause");        
    return 0;
} 
bool Factor(int number, int &pSquared, int &pCubed)
{
    if(number > 20) return true;
    else
    {
        pSquared = number*number;
        pCubed = number*number*number;
        return false;
    }
}
OVERPOWER8
19 / 19 / 1
Регистрация: 29.11.2009
Сообщений: 224
06.02.2010, 03:00  [ТС] #7
>> HIMen

Это легкий способ, но мне надо, чтоб функция работала с указателями!

Проблема в передаче значения:
Function(int* &, int* &) - работает,
однако
Function(int, int* &, int* &) - не работает!
HIMen
4129 / 1378 / 39
Регистрация: 12.04.2009
Сообщений: 2,346
06.02.2010, 03:14 #8
C++
1
2
bool Factor(int number, int *pSquared, int *pCubed)
error = Factor(number, &squared, &cubed);
это тоже самое что по ссылке
zim22
depict1
276 / 141 / 2
Регистрация: 11.07.2009
Сообщений: 606
06.02.2010, 11:01 #9
OVERPOWER8, я не понимаю, зачем ты передаёшь указатель по ссылке
ведь ты не изменяешь адрес указателя в функции.
Цитата Сообщение от OVERPOWER8 Посмотреть сообщение
Function(int, int* &, int* &)
OVERPOWER8
19 / 19 / 1
Регистрация: 29.11.2009
Сообщений: 224
06.02.2010, 11:34  [ТС] #10
>> zim22

я не понимаю, зачем ты передаёшь указатель по ссылке
ведь ты не изменяешь адрес указателя в функции.
Да ради удобства. Чтобы запускать так:
Factor(intOne, intTwo, intThree);

а не
Factor(intOne, &intTwo, &intThree);

и чтобы функция работала непосредственно с указателями.
(так надо, я лишь структуру описал).
zim22
depict1
276 / 141 / 2
Регистрация: 11.07.2009
Сообщений: 606
06.02.2010, 11:45 #11
если я не ошибаюсь, то твой код не должен компилиться.
т.к. 2 и 3 параметр функции - это указатели.
а ты передаёшь туда int.

C++
1
2
3
4
bool Factor(int number, int* &pSquared, int* &pCubed);
 
int number, squared, cubed;
error = Factor(number, squared, cubed);
OVERPOWER8
19 / 19 / 1
Регистрация: 29.11.2009
Сообщений: 224
06.02.2010, 12:22  [ТС] #12
если я не ошибаюсь, то твой код не должен компилиться.
т.к. 2 и 3 параметр функции - это указатели.
а ты передаёшь туда int.

C++
1
2
3
4
bool Factor(int number, int* &pSquared, int* &pCubed);
 
int number, squared, cubed;
error = Factor(number, squared, cubed);
Ты ошибаешься!
Код должен работать, т. к. функция извлекает адрес переменной int, и присваивает его указателю.
ПОЧЕМУ НЕ должно компилироваться!?
novi4ok
551 / 504 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
06.02.2010, 13:54 #13
вот так будет работать:
C++
1
2
3
4
5
6
7
8
9
    int squared = 0;
    int cubed = 0;
 
    int *pSq = &squared;
    int *pCb = &cubed;
    int number = 18;
    int *&zhopa_squared = pSq;
    int *&zhopa_cubed = pCb;
    bool error = Factor(number, zhopa_squared, zhopa_cubed);
хотя это - через ж*пу

зачем все усложнять? тут думаешь, как сложные вещи попроще и попонятнее представить, а тут, похоже, противоположная задача поставлена: напишу 2Х2 чтоб ни одна зараза не поняла как оно устроено.
zim22
depict1
276 / 141 / 2
Регистрация: 11.07.2009
Сообщений: 606
06.02.2010, 14:57 #14
Цитата Сообщение от OVERPOWER8 Посмотреть сообщение
Код должен работать, т. к. функция извлекает адрес переменной int
не умеет функция "извлекать" адрес переменной.
OVERPOWER8
19 / 19 / 1
Регистрация: 29.11.2009
Сообщений: 224
06.02.2010, 16:31  [ТС] #15
Вот, как надо:
Почему иногда функции передается значение int, а иногда - нет?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.02.2010, 16:31
Привет! Вот еще темы с ответами:

Как передать указатель функции, чтобы значение переменной изменилось? - C++
Имеются переменная и указатель на нее. int x, *y = &amp;x; Как передать указатель ф-ии, чтобы значение переменной изменилось?

Как передать значение переменной из функции инт в функцию воид? - C++
Как передать значения а и b из int start(void) в void inputfile(void), чтоб строка 34 и т.д. работала в иной функции? int x, y,...

Как передать значение переменной из одной функции в другую функцию - C++
нужно передать значение sum1 , sum2 , sum3 из каждой функции в главную . помогите , пожалуйста . #include &quot;stdafx.h&quot; #include...

Как передать в stringstream переменную типа int? - C++
Как запихнуть в stringstram int? Не находит такой перегруженной функции. sstream заинклудил. ifstream fin(&quot;C:\\ServerName.txt&quot;); ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
06.02.2010, 16:31
Ответ Создать тему
Опции темы

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