遇到C语言结构体之间的操作

目的:比较两个同类型的结构体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;
}

结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值