Вот мой код, в котором я получаю ошибку seg. Я почти уверен, что это связано с передачей по ссылке, но меня это смущает, и я не уверен, что я делаю это правильно.Почему я получаю ошибку сегментации? C программирование
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include "utils.h"
#define PI 3.1415926535897932384626433832795
int circleStatistics(double radius, double *diameter, double *circumference, double *area){
*diameter = radius * 2;
*circumference = PI * radius * 2;
*area = PI * radius * radius;
if (radius <= 0 || diameter == NULL || circumference == NULL || area == NULL)
printf("An error has occured\n");
return 1;
}else{
return 0;
}
}
Теперь вот код, который я использую, чтобы вызвать функцию и протестировать ее.
#include "utils.h"
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char **argv){
// Tests circleStatistics
double radius = 3;
double *diameter = NULL, *circumference = NULL, *area = NULL;
circleStatistics(radius, diameter, circumference, area);
printf("Expected output: radius = 3, diameter = 6, circumference ~= 18.849555, area ~= 28.2743339\n");
printf("Actual output: radius = %.0f, diameter = %.0f, circumference ~= %.7f, area ~= %.7f\n", radius, *diameter, *circumference, *area);
}
показать весь код – Haris
показать код, где функция circleStaistics называется – karim
Вы считаете, что проблема заключается в том, как вы передаете параметры, но вы предпочитаете пропустить эту часть? Вы также проверяете, что указатели являются «NULL», но после того, как вы их отменили? –