2016-09-22 54 views
-2
struct COMPLEX{ 
    int x; 
    int y; 
}; 

void add(struct COMPLEX *b[]); 

int main(int argc, char** argv) { 

    struct COMPLEX a[3]; 
    struct COMPLEX *ptr[] = { &a[0] , &a[1] , &a[2] }; 

    printf("Indtast a->x = "); 
    scanf("%d", a[0].x); 
    printf("Indtast a->y = "); 
    scanf("%d", a[0].y); 
    printf("Indtast a2->x = "); 
    scanf("%d", a[1].x); 
    printf("Indtast a2->y = "); 
    scanf("%d", a[1].y); 
    printf("Indtast a3->x = "); 
    scanf("%d", a[2].x); 
    printf("Indtast a3->y = "); 
    scanf("%d", a[2].y); 

    add(ptr); 

    return 0; 
} 

void add(struct COMPLEX *b[]){ 

    printf("%d + i%d",b[0].x + b[1].x + b[2].x, b[0].y + b[1].y + b[2].y); 

} 

我试图指出我的结构数组直到功能,这将打印计算出的复数。但它给了我一个错误。 任何人都可以请帮忙吗? 在此先感谢有人可以帮我用指针

+4

'的scanf( “%d”,一个[0] .X);' - >'scanf(“%d”,&a [0] .x);' –

+0

以供将来参考“但它给了我一个错误” - >更好地发布错误消息,而不是仅宣布收到错误。 – chux

+0

指针数组有什么用处?似乎它只是造成一团糟。 – Lundin

回答

1

你忘了在scanf添加 “&” 运营商

试试这个

struct COMPLEX{ 
int x; 
int y; 
}; 

void add(struct COMPLEX *b[]); 

int main(int argc, char** argv) { 

struct COMPLEX a[3]; 
struct COMPLEX *ptr[] = { &a[0] , &a[1] , &a[2] }; 

printf("Indtast a->x = "); 
scanf("%d", &a[0].x); 
printf("Indtast a->y = "); 
scanf("%d", &a[0].y); 
printf("Indtast a2->x = "); 
scanf("%d", &a[1].x); 
printf("Indtast a2->y = "); 
scanf("%d", &a[1].y); 
printf("Indtast a3->x = "); 
scanf("%d", &a[2].x); 
printf("Indtast a3->y = "); 
scanf("%d", &a[2].y); 

add(ptr); 

return 0; 
} 

void add(struct COMPLEX *b[]){ 

printf("%d + i%d",b[0].x + b[1].x + b[2].x, b[0].y + b[1].y + b[2].y); 

} 
+0

完美,它现在可以工作,但我必须在函数中设置箭头,例如b [0] - > x。 非常感谢! –

+0

选择我的答复作为答案 – Eddy

0

scanf()的代表扫描格式的字符串。现在,当从标准输入流扫描输入 时,scanf()需要将输入数据放入 的某处。为了存储格式化的输入数据,scanf()需要知道相同数据类型的变量的存储位置 。 &指示变量的内存位置。

校正在你的代码把&你在哪里某处读取输入您的代码,如: -

scanf("%d", &a[0].x); 
相关问题