Для стартеров в соответствии со стандартом C функция main без параметров должна быть объявлена как
int main( void )
Вы объявили массив из трех указателей, но элементы массива не инициализированы и имеют неопределенные значения .
В результате вызов функции scanf
в этом l oop
for(i=0;i<=2;i++){
scanf("%f",coefficient[i]);
}
вызывает неопределенное поведение.
Указатели, являющиеся элементами массива, должны указать на действительную память, где данные могут храниться с помощью указателей.
Например, вы можете для каждого указателя динамически выделять память, на которую будет указывать соответствующий указатель
Вот демонстрационная программа .
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
enum { N = 3 };
float *coefficient[N];
for ( size_t i = 0; i < N; i++ )
{
coefficient[i] = malloc( sizeof( float ) );
}
for ( size_t i = 0; i < N; i++ )
{
scanf( "%f", coefficient[i] );
}
for ( size_t i = 0; i < N; i++ )
{
printf( "%f\n", *coefficient[i] );
}
for ( size_t i = 0; i < N; i++ )
{
free( coefficient[i] );
}
return 0;
}
Если ввести
1.1
2.2
3.3
, то вывод будет выглядеть как
1.100000
2.200000
3.300000
Вы можете отформатировать вывод по своему усмотрению.
В общем, вы должны проверить, что вызов malloc
и / или scanf
был успешным.