我正在尝试解决这个问题,但无法理解为什么会出现编译时错误 我的代码是:
#include<stdio.h>
static struct student
{
int a;
int b;
int c;
int d;
}s1={6,7,8,9},s2={4,3,2,1},s3;
void main()
{
s3=s1+s2;
clrscr();
printf("%d %d %d %d",s3.a,s3.b,s3.c,s3.d);
getch();
}
答案 0 :(得分:5)
您无法执行此操作s3=s1+s2;
- 仅当+
运算符为您的结构重载时才能执行此操作。 C中不支持运算符重载。这就是您所需要的:
s3.a=s1.a+s2.a;
s3.b=s1.b+s2.b;
....
答案 1 :(得分:5)
您必须手动添加每个成员。
s3.a = s1.a + s2.a;
等等......
答案 2 :(得分:2)
你不能添加像这样的结构
s3=s1+s2;
C
直接支持结构的操作数量相对较少。正如我们所见,我们可以定义结构,声明结构类型的变量,并选择结构的成员。我们还可以分配整个结构:表达式c1 = c2
会将所有
c2
分配给c1
(假设前面的声明,包括实部和虚部)。我们还可以将结构作为参数传递给函数,并声明和定义返回结构的函数。 但要做其他事情,我们通常必须编写自己的代码(通常作为函数)。例如,我们可以编写一个函数来添加两个复数:
struct complex
cpx_add(struct complex c1, struct complex c2)
{
struct complex sum;
sum.real = c1.real + c2.real;
sum.imag = c1.imag + c2.imag;
return sum;
}
答案 3 :(得分:1)
定义加法运算符或使用s3.a = s1.a + s2.a; s3.b = s1.b + s2.b; etc
答案 4 :(得分:1)
问题:无法将structures
添加为s3=s1+s2;
如果要添加结构1 s1
和结构2 s2
试试这个:
s3.a=s1.a+s2.a;
s3.b=s1.b+s2.b;
s3.c=s1.c+s2.c;
s3.d=s1.c+s2.c;
答案 5 :(得分:1)
您无法在此处向其他人添加结构:s3=s1+s2;
如果您需要此功能,我建议您创建一个功能,例如
struct student add_up_students(struct student *s1, struct student *s2) {
struct student s = {0};
s.a= s1->a + s2->a;
s.b= s1->b + s2->b;
s.c= s1->c + s2->c;
s.d= s1->d + s2->d;
return s;
}
并使用它:
s3 = add_up_students(&s1, &s2);
打印出您所期望的内容。