Это позволяет мне думать, что вы не понимаете, что такое возвращаемое значение или как аргументы передаются функции.
Во втором примере вы не будете изменять rval
, который вы даетепри вызове функции, но ее копия.И тогда вы вернете значение rval
.
Тогда ваш второй пример "неправильный" (с логической точки зрения).
То, что вы пытались сделать, это
void compute_diam(float circumference, float pi, float& rval) {
/* Circumference = pi * diameter, so
diameter = circumference / pi */
rval = circumference / pi;
}
Редактировать: Исправление, выше только C ++, в C вы должны сделать следующее
void compute_diam(float circumference, float pi, float* rval) {
/* Circumference = pi * diameter, so
diameter = circumference / pi */
*rval = circumference / pi;
}
Где rval
дано по ссылке и гдефункция ничего не возвращает (void).
Но в этом простом случае этого следует избегать, интерфейс более понятен, если функция возвращает значение.
Редактировать: Чтобы убедить вас в том, что ваш второй пример плохо сформирован, подумайте о следующем:
float my_result = compute_diam (2.0, 3.14, «почему и что бы я здесь указывал?