Я дал этот кусок кода:пытается исправить ошибку - ошибка сегментации 11
#include <stdio.h>
#include <math.h>
struct polar_coordinate{
double theta;
double r;
};
struct polar_coordinate * polar(double x, double y);
int main(void){
double x = 2.0;
double y = 3.0;
struct polar_coordinate * pci;
pci = polar(x,y);
printf("The coordinate x = %.1f and y = %.1f is
in polar coordinates theta = %.2f and r = %.2f\n ",x,y,pci->theta,pci->r);
}
struct polar_coordinate * polar(double x, double y){
struct polar_coordinate pc;
pc.r = sqrt(x*x + y*y);
pc.theta = atan2(y,x);
return &pc;
}
Я тогда сказал, что структура polar_coordinate * полярная функция есть ошибка, что я должен исправить. Я пытался делать это с помощью:
struct polar_coordinate * polar(double x, double y){
struct polar_coordinate * pc;
pc->r = sqrt(x*x + y*y);
pc->theta = atan2(y,x);
return pc;
}
код может затем компилировать, но если я пытаюсь запустить я получаю ошибку сегментации 11. Но я не могу видеть то, что должно быть не так.
'polar()' возвращает указатель на локальную переменную, срок жизни которой заканчивается после возвращения функции. Увеличьте свои предупреждения о компиляторе. –
Возможный дубликат [возврат локальной переменной из функции в C] (http://stackoverflow.com/questions/4824342/returning-a-local-variable-from-function-in-c) – dandan78