Функции C с указателями

#c #c 11 #c 14

#c #c 11 #c 14

Вопрос:

В чем ошибка? Как это решить? Этот код предназначен для нахождения площади окружности с помощью указателей и функций. Ошибка, с которой я сталкиваюсь, заключается в том, что amp;answer не может быть преобразован в float .

 #include <iostream>

using namespace std;

void area(float, float);

int main()
{
    float radius, answer = 0.0;
    cout << "Enter a radius:";  // Take the radius from the user.
    cin  >> radius;
    area(amp;radius, amp;answer);
    cout << "Area of circle is:" << answer;
    return 0;

}

void area(float *value, float *result)  // This is the function to calculate the area.
{
    *result = 3.142 * (*value) * (*value);
}

 

Комментарии:

1. void area(float,float); Ваш прототип не принимает указатели.

2. Это c 11 или c 14 ? Это не может быть и то, и другое одновременно, поэтому отредактируйте свой вопрос, чтобы включить тот, который вы используете.

3. @TrebledJ правильно, вы должны изменить прямое объявление, поскольку оно не соответствует функции.

4. Не используйте указатели таким образом. Вся функция должна быть просто float area(float value) { return 3.142f * value * value; }

Ответ №1:

Вы можете сделать одну из двух вещей:

  • Измените прототип на void area(float*, float*);
  • Удалите прототип и переместите функцию:
     void area(float *value, float *result)  // This is the function to calculate the area.
    {
        *result = 3.142 * (*value) * (*value);
    }
     

над main() функцией. Любой из них будет работать.

Комментарии:

1. Большое спасибо, понял!!