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

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

Восстановить пароль Регистрация
 
НубаС++
 Аватар для НубаС++
1 / 1 / 1
Регистрация: 25.02.2012
Сообщений: 115
08.09.2012, 23:49     Возвращаемые значения функции #1
Есть функция, которая должна вернуть в программу значение, но что то не так.
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 значение функци?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.09.2012, 23:49     Возвращаемые значения функции
Посмотрите здесь:

C++ значения функции
C++ функция возвращает int, возвращаемые значения определены в макросах, как сразу выводить определённые макросы?
C++ возвращаемые значения функции шаблонного класса A и A<T>
Вызов функции в возврате значения функции C++
Составить программу вычисления значения функции для значения аргумента x, вводимого с клавиатуры C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Герц
523 / 340 / 4
Регистрация: 05.11.2010
Сообщений: 1,077
Записей в блоге: 1
08.09.2012, 23:52     Возвращаемые значения функции #2
Нигде не вижу объявлений FirstWidth, FirstHeight.
Твоя функция принимает параметры по значению, если ты надеешься получить через них какие-то результаты - передавай по ссылке.
Чтобы вернуть 2 значения - заворачивай их в структуру, класс, std :: pair или во что-то еще.
ValeryS
Модератор
6376 / 4842 / 442
Регистрация: 14.02.2011
Сообщений: 16,045
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 или во что-то еще.
т.е ссылки и указатели отменили
Герц
523 / 340 / 4
Регистрация: 05.11.2010
Сообщений: 1,077
Записей в блоге: 1
08.09.2012, 23:58     Возвращаемые значения функции #4
т.е ссылки и указатели отменили
Возвращаемым значением называется исключительно то, что приходит от return'a. Ref и out параметров ты можешь напихать сколько угодно, но они, строго говоряЮ не будут возвращаемыми значениями.
P.S.
Цитата Сообщение от Герц Посмотреть сообщение
Твоя функция принимает параметры по значению, если ты надеешься получить через них какие-то результаты - передавай по ссылке.
ValeryS
Модератор
6376 / 4842 / 442
Регистрация: 14.02.2011
Сообщений: 16,045
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;
}
Герц
523 / 340 / 4
Регистрация: 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
ValeryS
Модератор
6376 / 4842 / 442
Регистрация: 14.02.2011
Сообщений: 16,045
09.09.2012, 00:02     Возвращаемые значения функции #7
Цитата Сообщение от Герц Посмотреть сообщение
Возвращаемым значением называется исключительно то, что приходит от return'a. Ref и out параметров ты можешь напихать сколько угодно, но они, строго говоряЮ не будут возвращаемыми значениями.
Нам "шашечки или ехать"
ТС интересует как в функции ввести два значения которые можно использовать в другом месте
а вопросы терминологии это уже другой уровень знания
Герц
09.09.2012, 00:03
  #8

Не по теме:

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

ValeryS
Модератор
6376 / 4842 / 442
Регистрация: 14.02.2011
Сообщений: 16,045
09.09.2012, 00:03     Возвращаемые значения функции #9
Цитата Сообщение от Герц Посмотреть сообщение
И ошибку допустил:
ошибку уже поправил просто копипастил исходный код и не доглядел
я еще и тип функции исправил
Герц
09.09.2012, 00:04
  #10

Не по теме:

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

ValeryS
09.09.2012, 00:06
  #11

Не по теме:

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

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.09.2012, 17:07     Возвращаемые значения функции
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
НубаС++
 Аватар для НубаС++
1 / 1 / 1
Регистрация: 25.02.2012
Сообщений: 115
09.09.2012, 17:07  [ТС]     Возвращаемые значения функции #12
Свем спасибо, всем поставил плюсы.
Герц, OpenGL я щас изучаю, щас уже перешол на управление мышью, а для каждого экрана свои координаты нужны, вот для этого мне и надо firstWidth,firstHeight)
Yandex
Объявления
09.09.2012, 17:07     Возвращаемые значения функции
Ответ Создать тему
Опции темы

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