我宣布了两个结构:point
(其中包含2个双打)和circle
(其中包含一个点和圆的半径,一个双精度)。
typedef struct {
double x;
double y;
} point;
typedef struct {
point m;
double r;
} circle;
要创建一个圆圈,我使用这两个函数:
point* read_point() {
point* p = malloc (sizeof(point));
printf("\nx middle:");
scanf("%lf",&p->x);
printf("\ny middle:");
scanf("%lf",&p->y);
return p;
}
circle* read_circle() {
circle* c = malloc(sizeof(circle));
point* p = read_point();
printf("\nradius circle:");
scanf("%lf",&c->r);
c->m = *p;
}
在我的main
我声明了一个圆形指针数组,添加一个圆,然后尝试打印出中心点和半径。 (此时我的程序崩溃了。)
circle* array[3];
array[0] = read_circle();
print_circle(array[0]); //Crashes
这就是打印功能的样子:
void print_circle(circle* c){
point p = c->m;
printf("\n%lf",p.x);
printf("\n%lf",p.y);
printf("\n%lf",c->r);
}
答案 0 :(得分:4)
read_circle
并未返回c
(或其他任何内容)。
答案 1 :(得分:0)
您可能还想检查malloc()的返回值。