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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.87
OVERPOWER8
 Аватар для OVERPOWER8
19 / 19 / 1
Регистрация: 29.11.2009
Сообщений: 224
06.02.2010, 02:35     Как передать функции значение int? #1
Пытаюсь передать функции значение 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;
    }
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
HIMen
 Аватар для HIMen
4105 / 1354 / 39
Регистрация: 12.04.2009
Сообщений: 2,346
06.02.2010, 02:40     Как передать функции значение int? #2
убери все звездочки
OVERPOWER8
 Аватар для OVERPOWER8
19 / 19 / 1
Регистрация: 29.11.2009
Сообщений: 224
06.02.2010, 02:45  [ТС]     Как передать функции значение int? #3
>> HIMen

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

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

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

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

Вызов функции:
int Var1, Var2, Var3;
Factor(Var1, Var2, Var3);
HIMen
 Аватар для HIMen
4105 / 1354 / 39
Регистрация: 12.04.2009
Сообщений: 2,346
06.02.2010, 02:56     Как передать функции значение int? #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
 Аватар для OVERPOWER8
19 / 19 / 1
Регистрация: 29.11.2009
Сообщений: 224
06.02.2010, 03:00  [ТС]     Как передать функции значение int? #7
>> HIMen

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

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

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

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

и чтобы функция работала непосредственно с указателями.
(так надо, я лишь структуру описал).
zim22
depict1
 Аватар для zim22
276 / 141 / 2
Регистрация: 11.07.2009
Сообщений: 606
06.02.2010, 11:45     Как передать функции значение int? #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
 Аватар для OVERPOWER8
19 / 19 / 1
Регистрация: 29.11.2009
Сообщений: 224
06.02.2010, 12:22  [ТС]     Как передать функции значение int? #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
549 / 502 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
06.02.2010, 13:54     Как передать функции значение int? #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
 Аватар для zim22
276 / 141 / 2
Регистрация: 11.07.2009
Сообщений: 606
06.02.2010, 14:57     Как передать функции значение int? #14
Цитата Сообщение от OVERPOWER8 Посмотреть сообщение
Код должен работать, т. к. функция извлекает адрес переменной int
не умеет функция "извлекать" адрес переменной.
OVERPOWER8
 Аватар для OVERPOWER8
19 / 19 / 1
Регистрация: 29.11.2009
Сообщений: 224
06.02.2010, 16:31  [ТС]     Как передать функции значение int? #15
Вот, как надо:
Почему иногда функции передается значение int, а иногда - нет?
novi4ok
549 / 502 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
06.02.2010, 17:13     Как передать функции значение int? #16
так это и коню было понятно, что параметр, который ф-я будет менять, нужно объявлять или ссылкой, или указателем, а не тем кандибобером, как в твоем первом примере. ты ведь нигде не спрашивал, как люди делают такие вещи. ты спросил, почему твоя абракадабра не работает

а то имей ввиду, что самый прямой способ - это вот так:

C++
1
2
3
4
5
6
7
8
9
void getInt222 (int *pInt){
   *pInt = 222;
}
 
int i;
 
getInt222 (&i);
 
// now the value of i is 222
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.02.2010, 17:51     Как передать функции значение int?
Еще ссылки по теме:

Как передать 0 в функцию типа f (int, int&) C++
Как передать значение из функции C++
Как передать значение переменной из функции инт в функцию воид? C++

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

Или воспользуйтесь поиском по форуму:
opa_opa
3 / 3 / 0
Регистрация: 06.02.2010
Сообщений: 13
06.02.2010, 17:51     Как передать функции значение int? #17
Цитата Сообщение от OVERPOWER8 Посмотреть сообщение
и чтобы функция работала непосредственно с указателями.
(так надо, я лишь структуру описал).
C++
1
bool Factor(int number, int* pSquared, int* pCubed);
При этом, при вызове функции, ты должен ей передавать адреса переменных.

Добавлено через 22 минуты
Цитата Сообщение от OVERPOWER8 Посмотреть сообщение
Код должен работать, т. к. функция извлекает адрес переменной int, и присваивает его указателю.
Тогда твой пример реализуется следующим образом:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
bool Factor(int number, int* pSquared, int* pCubed);
 
int main()
{ 
     ...
     ...
     ...
     int a,b,c;
     bool d;
     d=Factor (a, &b, &c);
     ...
     ...
     ...
return 0;
}
Yandex
Объявления
06.02.2010, 17:51     Как передать функции значение int?
Ответ Создать тему
Опции темы

Текущее время: 10:35. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru