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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 31, средняя оценка - 4.68
dvijok
0 / 0 / 0
Регистрация: 10.07.2012
Сообщений: 61
#1

Что означает запись в скобках и что возвращает return - C++

10.07.2012, 23:36. Просмотров 4108. Ответов 13
Метки нет (Все метки)

Всем привет!
Начал читать книгу BecomeAnXcoder и тут появился вопрос.
В пример приведен такой код
C++
1
2
3
4
5
6
circleArea(float theRadius) //(1)
{
float theArea;
theArea = 3.14159 * theRadius * theRadius;
return theArea; //(2)
}
Вопрос такой, что означает запись в скобках (1) и куда и что возвращает параметр return (2)?

P.S Прошу не грузить терминами, т.к C++ я только начал изучать и мой уровень знаний пока крайне низок...)
Заранее спасибо за ответ)
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.07.2012, 23:36
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Что означает запись в скобках и что возвращает return (C++):

Нюансы синтаксиса: что означает запись return класс (имя, имя) ? - C++
Добрый день! Столкнулся в одном из кодов (приводится ниже, из книги Лафоре) с незнакомым мне синтаксисом. return time12(pm, hrs12,...

Что означает название переменной в круглых скобках? - C++
Что означает название переменной в круглых скобках? В комментариях указан тип переменной и некоторые пояснения. auto c = 0; // int ...

Что означает выражение стоящее после return? - C++
Всем привет. Довольно часто в уроках по c++. Вижу после написания программы либо функциии. return переменная; Что это значит? ...

Что означает запись - C++
Привет. Верна ли, и если да, то что значит данная запись и для чего она используется: bool found = false; found = winner(board) ==...

Что означает запись ? - C++
Что означает(подразумевает) запись: class Datb:public Data{ public:Datb(int m, int x):Data(m){ } Полный код программы: #include...

Что означает запись? - C++
for (; j < k; j++) - Что означает эта строчка? Интересует именно символ ";" сразу после скобки

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Ksan
27 / 27 / 0
Регистрация: 02.11.2010
Сообщений: 370
10.07.2012, 23:46 #2
dvijok,

1) ты передаешь туда некое значение, с которым внутри функции что-то происходит
2) параметр 2 возвращает значение туда, откуда вызвали

например float abc = circleArea(2.5);

в данном случае значение вернется в переменную abc.


зы:
у этой функции должен быть возвращаемый тип:

C++
1
float circleArea(float theRadius)
0
Nick Alte
Эксперт С++
1637 / 1009 / 119
Регистрация: 27.09.2009
Сообщений: 1,945
Завершенные тесты: 1
10.07.2012, 23:49 #3
Запись в скобках - аргумент функции. Она принимает некое значение типа float (вещественное число), в данном случае - радиус круга, и выдаёт в ответ его площадь, тоже число типа float. В этой строке допущена грубая ошибка, не указан тип значения, возвращаемого функцией, должно быть так:
C++
1
float CircleArea (float theRadius)
. Значение, указанное в операторе return, будет возвращено в результате вызова функции:
C++
1
2
float area;
area = CircleArea(2.5); // в переменную area занесено значение площади круга с радиусом 2.5
Здесь происходит вызов функции с подстановкой числа 2.5 в качестве значения theRadius, и получившееся в итоге в переменной theArea число передаётся с помощью оператора return в место вызова. То есть, вызов функции порождает некоторое ответное значение, которое мы уже можем использовать как захотим. Здесь мы захотели поместить его в переменную area.
0
DiffEreD
1430 / 767 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
10.07.2012, 23:49 #4
Коментарии (1) и (2) наверное по смыслу в книге разясняются
0
enk
45 / 44 / 7
Регистрация: 16.06.2012
Сообщений: 177
10.07.2012, 23:52 #5
Цитата Сообщение от dvijok Посмотреть сообщение
Всем привет!
Начал читать книгу BecomeAnXcoder и тут появился вопрос.
В пример приведен такой код
C++
1
2
3
4
5
6
circleArea(float theRadius) //(1)
{
float theArea;
theArea = 3.14159 * theRadius * theRadius;
return theArea; //(2)
}
Вопрос такой, что означает запись в скобках (1) и куда и что возвращает параметр return (2)?

P.S Прошу не грузить терминами, т.к C++ я только начал изучать и мой уровень знаний пока крайне низок...)
Заранее спасибо за ответ)
1) Это означает, что функция может принимать только один аргумент. Тип этого значения - float.
2) return возвращает значение переменной theArea туда, где была вызвана функция.
пример:
C++
1
2
float x = 10.5;
float y = circleArea(float);
Переменной y присвоится значение, которое вернула функция (в данном случае 346,3602975).

Подробнее - http://shatalov.su/ru/articles/cpp_p...function_0.php
p.s. советую для начала взять книжку именно по C++ (Страуструп, Хортон например).
0
dvijok
0 / 0 / 0
Регистрация: 10.07.2012
Сообщений: 61
11.07.2012, 13:23  [ТС] #6
Ну, это я вроде понял...
Но что тогда значит это:

C++
1
2
3
4
5
6
7
8
int x = 5;
int y = 4;
int z;
 
sum(0,1);     // 1
sum(x,2);     // 7
sum(x,y);     // 9
z = sum(x,y); // z = 9
В этом случае в sum складываются два числа в скобках?
А в случаях когда в скобках идут не цифры, а слова (без int, float и пр.)?
_____________________________________
Добавлено через 2 минуты
[QUOTE=enk;3256421]
C++
1
2
float x = 10.5;
float y = circleArea(float);
Переменной y присвоится значение, которое вернула функция (в данном случае 346,3602975).
Не понял, откуда взялось число 346,3602975? И почему функция вернула значение без оператора return?
0
Lel'ka
8 / 8 / 2
Регистрация: 10.07.2012
Сообщений: 38
11.07.2012, 13:43 #7
dvijok, Советую книгу Керниган, Ричи. Язык C
0
novi4ok
551 / 504 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
11.07.2012, 13:55 #8
а где и как продекларирована sum()?
0
dvijok
0 / 0 / 0
Регистрация: 10.07.2012
Сообщений: 61
11.07.2012, 14:14  [ТС] #9
Книги я конечно почитаю, но все же прошу ответить на мой вопрос...
0
Vega251
290 / 93 / 3
Регистрация: 07.09.2011
Сообщений: 477
Записей в блоге: 2
11.07.2012, 14:21 #10
Нужно смотреть сигнатуру функции. Если формальный параметр указан с типом char* или string, то можно использовать строку. Если нужно число, то указывается соответствующий тип. С язык строго типизированный. Однако перегрузка функций может творить чудеса.
Я веду цикл уроков по С++ на своем блоге. Если нужно, скину в личку. В одном из уроков я как раз подробно разжевал использование функций. С учетом того, что даже мой двоюродный брат-тугодум все понял, то можно считать, что там написано все подробно.
0
Schizorb
509 / 461 / 16
Регистрация: 07.04.2012
Сообщений: 865
Записей в блоге: 1
Завершенные тесты: 1
11.07.2012, 14:28 #11
Не путай определение функции и её вызов.

Сначала функция должна быть объявлена (указывается её имя, тип возвращаемого значения, в скобках - количество и тип формальных параметров):

C++
1
float circleArea(float theRadius);
А также определена, то есть, указано то, что конкретно будет делать функция.
C++
1
2
3
4
5
6
float circleArea(float theRadius)
{
    float theArea;
    theArea = 3.14159 * theRadius * theRadius;
    return theArea;
}
Функция должна быть обязательно объявлена до её вызова (определение может идти после). Потом её можно вызывать, например, из другой функции:

C++
1
2
3
4
5
int main()
{
    float x = circleArea(1.45F); // вызов
    // ....
}
Здесь ты вызываешь функцию с аргументом 1.45F, например. Результат (то, что вернул return) присваивается переменной x.
0
dvijok
0 / 0 / 0
Регистрация: 10.07.2012
Сообщений: 61
11.07.2012, 15:10  [ТС] #12
Цитата Сообщение от Vega251 Посмотреть сообщение
Нужно смотреть сигнатуру функции. Если формальный параметр указан с типом char* или string, то можно использовать строку. Если нужно число, то указывается соответствующий тип. С язык строго типизированный. Однако перегрузка функций может творить чудеса.
Я веду цикл уроков по С++ на своем блоге. Если нужно, скину в личку. В одном из уроков я как раз подробно разжевал использование функций. С учетом того, что даже мой двоюродный брат-тугодум все понял, то можно считать, что там написано все подробно.
Да, отправьте, пожалуйста)

Добавлено через 35 минут
Цитата Сообщение от Schizorb Посмотреть сообщение
Не путай определение функции и её вызов.

Сначала функция должна быть объявлена (указывается её имя, тип возвращаемого значения, в скобках - количество и тип формальных параметров):

C++
1
float circleArea(float theRadius);
А также определена, то есть, указано то, что конкретно будет делать функция.
C++
1
2
3
4
5
6
float circleArea(float theRadius)
{
    float theArea;
    theArea = 3.14159 * theRadius * theRadius;
    return theArea;
}
Функция должна быть обязательно объявлена до её вызова (определение может идти после). Потом её можно вызывать, например, из другой функции:

C++
1
2
3
4
5
int main()
{
    float x = circleArea(1.45F); // вызов
    // ....
}
Здесь ты вызываешь функцию с аргументом 1.45F, например. Результат (то, что вернул return) присваивается переменной x.
Не понял, зачем конкретно здесь нужен аргмент 1.45F?
0
Schizorb
509 / 461 / 16
Регистрация: 07.04.2012
Сообщений: 865
Записей в блоге: 1
Завершенные тесты: 1
11.07.2012, 15:17 #13
Функция circleArea вычисляет площадь круга, так? Она принимает параметр типа float (theRadius). То есть принимает радиус круга, делает с ним расчёты и возвращает площадь.

Вызов функции мы делаем, подставляя конкретный аргумент. Т.е. circleArea(1) - вычислит площадь круга с радиусом 1, circleArea(23.7) - с радиусом 23.7.

За этим здесь и нужен аргумент. Число 1.45F - просто для примера, могло бы быть и другое.
1
dvijok
0 / 0 / 0
Регистрация: 10.07.2012
Сообщений: 61
11.07.2012, 16:46  [ТС] #14
Ну, вроде более-менее понял спасибо)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.07.2012, 16:46
Привет! Вот еще темы с ответами:

Объяснить что означает запись if (i % 10 == 0) - C++
Объясните, пожалуйста, что означает эта запись простыми словами

Что означает запись int (*a)[10]? - C++
int (*a); Что создаёт компилятор если я забиваю это?

Что означает эта запись? - C++
Что означает эта запись? и можно ли ее как нибудь заменить или запихнуть в подключаемую библиотеку? C++ Visual Stdio 2010 typedef...

что означает такая запись c*=a%10 - C++
Здравствуйте, у меня вот такой вопрос, что означает такая запись c*=a%10


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

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

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