取消引用一个struct指针数组

时间:2015-08-12 15:39:31

标签: c arrays pointers struct

我宣布了两个结构: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);
}

2 个答案:

答案 0 :(得分:4)

read_circle并未返回c(或其他任何内容)。

答案 1 :(得分:0)

您可能还想检查malloc()的返回值。