Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
НубаС++
1 / 1 / 1
Регистрация: 25.02.2012
Сообщений: 115
#1

Возвращаемые значения функции - C++

08.09.2012, 23:49. Просмотров 946. Ответов 11
Метки нет (Все метки)

Есть функция, которая должна вернуть в программу значение, но что то не так.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int StartInfo(int FirstWidth,int FirstHeight)
{
    printf ("Write width: ");
    scanf("%d",&FirstWidth);
    printf ("Write height: ");
    scanf("%d",&FirstHeight);
    return FirstHeight;
}
int main(int argc, char** argv)
{
    StartInfo(FirstWidth, FirstHeight);
    printf ("%d", FirstHeight);
}
Если выводить FirstHeight в функции получается число которое я писал, а если в программе, то "0"
Может я дурак, поясните пожалуйста че не так то?
И еще, а как вернуть 2 значение функци?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.09.2012, 23:49
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Возвращаемые значения функции (C++):

Возвращаемые значения функции шаблонного класса A и A<T>
первый листинг template &lt;typename T&gt; class A { public: T a; ...

можно как то сравнить возвращаемые значения этими функциями(разнопотоковыми)? функции на разных потоках
можно как то сравнить возвращаемые значения этими функциями? и например...

Возвращаемые значения: зачем нужны и где используются?
Здравствуйте! Меня интересует вопрос о возвращаемых значениях в коде. Зачем они...

функция возвращает int, возвращаемые значения определены в макросах, как сразу выводить определённые макросы?
Друзья! Есть какой-нибудь способ без if-else? Ну то есть вот код: #define...

Вычислить значения функции F на интервале от начального значения х= Хнач до конечного значения х=Хкон с шагом X шаг
Написал программу для решения задачи, нужно использовать цикл. Программа вроде...

Вычислить значения функции F на интервале от начального значения до конечного значения
Написать консольное приложение на С++ Перепечатайте пожалуйста текст задания...

11
Герц
524 / 341 / 12
Регистрация: 05.11.2010
Сообщений: 1,077
Записей в блоге: 1
08.09.2012, 23:52 #2
Нигде не вижу объявлений FirstWidth, FirstHeight.
Твоя функция принимает параметры по значению, если ты надеешься получить через них какие-то результаты - передавай по ссылке.
Чтобы вернуть 2 значения - заворачивай их в структуру, класс, std :: pair или во что-то еще.
1
ValeryS
Модератор
7134 / 5401 / 669
Регистрация: 14.02.2011
Сообщений: 18,227
08.09.2012, 23:55 #3
Цитата Сообщение от НубаС++ Посмотреть сообщение
Может я дурак, поясните пожалуйста че не так то?
а то что при такой передаче
Цитата Сообщение от НубаС++ Посмотреть сообщение
int StartInfo(int FirstWidth,int FirstHeight)
{
в функции образуется копия твоих параметров и вся работа идет с ними
при выходе они благополучно забываются
или передавай по ссылке или указателю
или в твоем случае
C++
1
printf ("%d",StartInfo(FirstWidth, FirstHeight));
тогда напечатается возвращаемое значение
ты же его нигде не запоминаешь
Цитата Сообщение от НубаС++ Посмотреть сообщение
StartInfo(FirstWidth, FirstHeight);
Добавлено через 1 минуту
Цитата Сообщение от Герц Посмотреть сообщение
Чтобы вернуть 2 значения - заворачивай их в структуру, класс, std :: pair или во что-то еще.
т.е ссылки и указатели отменили
1
Герц
524 / 341 / 12
Регистрация: 05.11.2010
Сообщений: 1,077
Записей в блоге: 1
08.09.2012, 23:58 #4
т.е ссылки и указатели отменили
Возвращаемым значением называется исключительно то, что приходит от return'a. Ref и out параметров ты можешь напихать сколько угодно, но они, строго говоряЮ не будут возвращаемыми значениями.
P.S.
Цитата Сообщение от Герц Посмотреть сообщение
Твоя функция принимает параметры по значению, если ты надеешься получить через них какие-то результаты - передавай по ссылке.
1
ValeryS
Модератор
7134 / 5401 / 669
Регистрация: 14.02.2011
Сообщений: 18,227
08.09.2012, 23:59 #5
НубаС++,
конкретно твой случай
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void StartInfo(int *FirstWidth,int *FirstHeight)
{
    printf ("Write width: ");
    scanf("%d",FirstWidth);
    printf ("Write height: ");
    scanf("%d",FirstHeight);
 
}
int main(int argc, char** argv)
{
   int firstWidth, firstHeight;
 
   StartInfo(&firstWidth, &firstHeight);
    printf ("%d  %d", firstWidth,firstHeight);
 
 return 0;
}
1
Герц
524 / 341 / 12
Регистрация: 05.11.2010
Сообщений: 1,077
Записей в блоге: 1
09.09.2012, 00:01 #6
Зачем же было мудрить с указателями, если достаточно ссылок?
C++
1
int StartInfo( int& FirstWidth,int& FirstHeight );
И ошибку допустил:
C++
1
2
    scanf("%d",&FirstHeight); // scanf передается int** вторым параметром
    return FirstHeight; //FirstHeight имеет тип int*, функция возвращает int
1
ValeryS
Модератор
7134 / 5401 / 669
Регистрация: 14.02.2011
Сообщений: 18,227
09.09.2012, 00:02 #7
Цитата Сообщение от Герц Посмотреть сообщение
Возвращаемым значением называется исключительно то, что приходит от return'a. Ref и out параметров ты можешь напихать сколько угодно, но они, строго говоряЮ не будут возвращаемыми значениями.
Нам "шашечки или ехать"
ТС интересует как в функции ввести два значения которые можно использовать в другом месте
а вопросы терминологии это уже другой уровень знания
1
Герц
09.09.2012, 00:03
  #8

Не по теме:

Так я ответил четко на поставленный вопрос :-)

1
ValeryS
Модератор
7134 / 5401 / 669
Регистрация: 14.02.2011
Сообщений: 18,227
09.09.2012, 00:03 #9
Цитата Сообщение от Герц Посмотреть сообщение
И ошибку допустил:
ошибку уже поправил просто копипастил исходный код и не доглядел
я еще и тип функции исправил
1
Герц
09.09.2012, 00:04
  #10

Не по теме:

Нубас, а OpenGL и 3ds не покатили? :-) Я же вроде объяснил, как что делать там

1
ValeryS
09.09.2012, 00:06
  #11

Не по теме:

Цитата Сообщение от Герц Посмотреть сообщение
Так я ответил четко на поставленный вопрос :-)
ты на уровень то вопрошающего гляди
он не может задать правильно вопрос потому что не обладает необходимыми знаниями
а ты ему сразу структуры:cry:

0
НубаС++
1 / 1 / 1
Регистрация: 25.02.2012
Сообщений: 115
09.09.2012, 17:07  [ТС] #12
Свем спасибо, всем поставил плюсы.
Герц, OpenGL я щас изучаю, щас уже перешол на управление мышью, а для каждого экрана свои координаты нужны, вот для этого мне и надо firstWidth,firstHeight)
0
09.09.2012, 17:07
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.09.2012, 17:07
Привет! Вот еще темы с решениями:

Функции. Как после одного возвратного значения функции отталкиваться от возврата другой функции
Написал код, в котором 2 функции одна возвращает стринговое значение, вторая...

Для каждого значения A вывести все значения функции попдающие в интервал от C до D
Мне дали вот такое условие задачи: Y=f(x; a) X1&lt;=x&lt;=x2, x3 A1&lt;=a&lt;=a2, a3...

В зависимости от значения некоторого выражения вычислить значения функции y(x), определенной на отрезке [a;b],
Добрый вечер, помогите пожалуйста решить задачку С++ на тему&quot;Сочетания циклов и...

Вычислить и вывести на экран значения функции в зависимости от входного значения Х
Вычислить и вывести на экран значения функции в зависимости от входного...


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

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

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