#c #function #pointers #parameters
#c #функция #указатели #параметры
Вопрос:
Я создаю программу, которая позволяет пользователям вводить данные о планете. В этой функции у меня должно быть 3 параметра указателя, чтобы я мог передавать указателям адреса переменных, объявленных вне функции, затем использовать scanf для считывания данных по этим адресам (в форме параметров указателя).
Программа компилируется, но программа вылетает, когда я ввожу новые данные о планете: (
void new_planet_data(double *temp_mass, double *temp_radius, double * temp_density)
{
printf("Enter the planet's mass (earth = 5.9736e24): ");
scanf("%lf",amp;temp_mass);
printf("Enter the planet's radius (earth = 6.37101e6): ");
scanf("%lf",amp;temp_radius);
printf("Enter the air density (earth = 1.2):");
scanf("%lf",amp;temp_density);
planet_mass = *temp_mass;
planet_radius = *temp_radius;
planet_density = *temp_density;
}
Комментарии:
1. Итак, вы пробовали запускать свою программу в отладчике?
Ответ №1:
temp_x
Переменные уже являются указателями, поэтому нет необходимости использовать amp;
оператор в scanf
.