目的:比较两个同类型的结构体A、B是否相同
方法:A==B
结果:【error: invalid operands to binary ==】
原因:C语言中结构体不能直接使用==操作符进行比较
解决方法:
1、重载逻辑比较运算符,operate == < > >= <= (struct A, struct B){加入比较结构体的代码,返回bool值}
2、如果没有重载,就在结构体里面设置一些标志位,专门用于比较
在函数中修改结构体的值,应该传入结构体指针还是指针变量呢?
对于结构体在函数中的传递还是遵循函数参数的值传递原则,即如果传递的是结构体变量,那么只是结构体的一份拷贝在函数中使用,无法真正改变结构体里面的数据。所以要想改变结构体里面的数据,那么还是要传递结构体的指针,就可以改变结构体里面变量的数值。
验证代码:
#include <stdio.h>
#include <stdlib.h>
struct student{
int dat;
};
void change_struct_value(struct student s);
void change_struct_pointer(struct student* s);
int main()
{
struct student stu1;
stu1.dat=0;
change_struct_value(stu1);
printf("%d\n",stu1.dat);
change_struct_pointer(&stu1);
printf("%d\n",stu1.dat);
system("pause");
return 0;
}
void change_struct_value(struct student s){
s.dat=10;
}
void change_struct_pointer(struct student* s){
s->dat=100;
}
结果: