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

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

Войти
Регистрация
Восстановить пароль
 
НубаС++
 Аватар для НубаС++
1 / 1 / 1
Регистрация: 25.02.2012
Сообщений: 115
#1

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

08.09.2012, 23:49. Просмотров 891. Ответов 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 значение функци?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Герц
523 / 340 / 4
Регистрация: 05.11.2010
Сообщений: 1,077
Записей в блоге: 1
08.09.2012, 23:52     Возвращаемые значения функции #2
Нигде не вижу объявлений FirstWidth, FirstHeight.
Твоя функция принимает параметры по значению, если ты надеешься получить через них какие-то результаты - передавай по ссылке.
Чтобы вернуть 2 значения - заворачивай их в структуру, класс, std :: pair или во что-то еще.
ValeryS
Модератор
6449 / 4915 / 451
Регистрация: 14.02.2011
Сообщений: 16,297
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
Модератор
6449 / 4915 / 451
Регистрация: 14.02.2011
Сообщений: 16,297
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
Модератор
6449 / 4915 / 451
Регистрация: 14.02.2011
Сообщений: 16,297
09.09.2012, 00:02     Возвращаемые значения функции #7
Цитата Сообщение от Герц Посмотреть сообщение
Возвращаемым значением называется исключительно то, что приходит от return'a. Ref и out параметров ты можешь напихать сколько угодно, но они, строго говоряЮ не будут возвращаемыми значениями.
Нам "шашечки или ехать"
ТС интересует как в функции ввести два значения которые можно использовать в другом месте
а вопросы терминологии это уже другой уровень знания
Герц
09.09.2012, 00:03
  #8

Не по теме:

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

ValeryS
Модератор
6449 / 4915 / 451
Регистрация: 14.02.2011
Сообщений: 16,297
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++ Для каждого значения A вывести все значения функции попдающие в интервал от C до D
Вычисление значения функции C++
можно как то сравнить возвращаемые значения этими функциями(разнопотоковыми)? функции на разных потоках C++
C++ В зависимости от значения некоторого выражения вычислить значения функции y(x), определенной на отрезке [a;b],

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

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

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