Столкнулся с такой проблемой, после выполнения функции возвращаю указатель (который в функции имеет значение!!!). В результате в main возвращает 0. Почему?
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
float* fun(int n, float* result){
float x=0;
float res=0;
for(int a=0;a<n;a++){
if(a%2==0)
x=pow(a,2);
else
x=(a-1)*a;
float sq = sqrt(x);
res=res+sq;
}
result=&res;
return result;
}
int main(){
int n=20;
float *result;
printf("%f",result);
printf("\n");
result=fun(n,result);
printf("%f", result);
}`
Вы возвращаете указатель на локальную переменную, которой после возврата из функции просто нет. И куда указывает этот указатель - Бог весть...
И компилятор должен был вас об этом предупредить.
И, кстати, выводить указатель как значение - неверно:
float *result;
printf("%f",result); <-- раз здесь %f, передавать нужно
значение float, а не указатель на него
Если бы вы сразу задавали правильно вопрос...
void fun(int n, float* result)
{
...
*result=res;
}
int main()
{
int n=20;
float result;
fun(n,&result);
printf("%f", result);
}
Вам надо что-то типа этого.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Нужен двумерный динамический вектор, который можно будет удалить в любой момент
В этом коде я получаю число, которое ввел в EditText, и если оно пустое то выбрасывается исключениеТак вот почему именно нужно выбросить исключение
Хочу сохранить данные из таблицы JTable и, соответственно, восстановить их при новом запуске программыВ коде инициализирована таблица table