简单的问题:结构的赋值大家通常怎么做?

realfishhook 2005-10-06 11:19:19
typedef struct
{
int a;
long b;
char c;
double d;
....
}A;

A a,b;
....//a已经赋值了
--------------------------
接下来,如果把a的值赋给b,大家都怎么做?

a) b.xx=a.xx
还是
b) 直接memcopy
???
--------------------------
用b的方式,不会出现问题吧???谢了先!
------------------------------------------------------------------




...全文
326 13 打赏 收藏 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
wuming2003 2005-10-09
  • 打赏
  • 举报
回复
在c中就直接使用a=b,相对于memcpy效率更高(由编译器直接生成代码),而效果一样
在c++中不要使用memcpy,如果需要重载=
格兰特杨 2005-10-09
  • 打赏
  • 举报
回复
Ha, 必须补充...。

A b = a; //是复制构造

如果用
A b;
b = a; //是赋值操作

然而在没有明确定义A的复制构造时,两者的结果应该是一样的。
格兰特杨 2005-10-09
  • 打赏
  • 举报
回复
C++: 把struct看成类,所以用=操作符可以调用缺省复制构造,也即位copy。
C: 你最好用memcpy,视你用什么编译器而定。gcc好象也可以用=,不确定

你这个类是没有问题,如果在C++里面,直接用=号即可。memcpy当然也可以。
mefit 2005-10-09
  • 打赏
  • 举报
回复
b=a
snowbirdfly 2005-10-09
  • 打赏
  • 举报
回复
应该用memcpy好一些~~
更容易一点~~~
haozhangr 2005-10-09
  • 打赏
  • 举报
回复
直接赋值好了

wzjall 2005-10-06
  • 打赏
  • 举报
回复
可以重载=,
也可以对成员一个一个的赋值.
看具体情况而定
zhouhuahai 2005-10-06
  • 打赏
  • 举报
回复
memcpy是要对指针进行的.
xiaocai0001 2005-10-06
  • 打赏
  • 举报
回复
要么一个一个的赋值

要么memcopy()

在C++中还可以重载=
heskyII 2005-10-06
  • 打赏
  • 举报
回复
同意 liem(阿明) ( ) 信誉:105
我遇到过这个问题,可以直接用b=a;进行赋值,但如果包含类的对象成员和指针就不肯定了。
如果含有指针,也不能用memcpy,因为会是b与a中的指针指向同一内存区,进行操作的时候,如果a改变了指针的指向,则b的指向也会发生改变。
liem 2005-10-06
  • 打赏
  • 举报
回复
也可以直接赋值吧
b=a;
yjy1001 2005-10-06
  • 打赏
  • 举报
回复
A a,b;

memcpy(&b, &a, sizeof(A));//结构赋值的常用方法
xiao999huan 2005-10-06
  • 打赏
  • 举报
回复
1)void *memcpy(void *destin,void *source,unsigned n)
memcpy从source复制一个n字节的块到destin.如果源块和目标块重迭,则选择复制方向,
以例正确地复制覆盖的字节. memcpy返回destin

2)void *memccpy(void *destin,void *source,unsigned char ch,unsigned n)
memccpy从source复制字节到destin.复制一结束就发生下列任一情况:
(1)字符ch首选复制到destin.
(2)n个字节已复制到destin.
memccpy若复制了ch,则返回直接跟随ch的在destin中的字节的一个指针;
否则返回NULL
源码链接: https://pan.quark.cn/s/651b74ed6067 《MQL4中文帮助手册》是一部详尽阐述MetaQuotes Language 4(MQL4)编程语言的参考书籍,其核心目标在于协助用户掌握并运用MQL4进行金融市场的自动化交易系统构建。MQL4作为MetaTrader 4交易平台的核心编程语言,赋予了交易者开发自定义指标、Expert Advisors(EA智能交易系统)以及脚本的能力。 ### MQL4基础知识 1. **Syntax 语法**:MQL4的语法规则与C/C++语言展现出相似性,涵盖了变量声明、函数调用、条件判断、循环机制等核心要素。熟练掌握并合理运用语法是开发高效MQL4代码的先决条件。 2. **Comments 注释**:在MQL4编程环境中,单行注释采用两个斜线(//)进行标识,而多行注释则通过/* 和 */进行界定。注释的主要功能在于阐释代码用途,从而提升代码的可读性与可维护性。 3. **Identifiers 标识符**:标识符是程序中用于命名变量、函数、类等元素的字符序列。其命名规则要求必须以字母或下划线作为开头,后续可包含字母、数字或下划线组合。MQL4语言对大小写敏感,因此`MyVariable`与`myvariable`被视为两个独立的标识符。 4. **Reserved words 保留字**:保留字是MQL4语言中预先设定的特殊词汇,例如`int`, `bool`, `double`, `if`, `else`, `for`, `while`等,这些词汇不可用作自定义标识符,以防止与语言关键字产生冲突。 5. **Data types 数据类型**:MQL4支持多元化的数据类型,包括...
内容概要:本文针对电动汽车参与充放电调度时因放电奖励差异导致车主响应意愿不均衡的问题,提出了一种量化用户响应行为的电动汽车响应率计算方法,并提供了基于Matlab的代码实现。该方法通过建立激励机制与用户参与度之间的数学关系,有效刻画不同奖励水平下车主对放电调度的响应概率,为核心研究电动汽车集群调控、需求侧响应策略优化及电力市场激励机制设计等问题提供了关键建模工具,有助于提升电网对大规模电动汽车负荷的调度能力与互动效率。; 适合人群:具备电力系统、智能交通或能源管理等相关专业背景,熟悉Matlab编程语言,从事科研工作或工程应用的研究生及研究人员。; 使用场景及目标:①用于分析不同激励政策对电动汽车用户行为的影响程度;②构建需求响应模型中的用户响应概率模块,提升负荷预测与调度决策精度;③支撑车网互动(V2G)场景下的优化调度算法开发与仿真验证,推动电动汽车资源的规模化协同利用。; 阅读建议:建议结合具体的调度场景和实测用户行为数据,对该响应率模型进行参数标定与适应性调整,并可进一步将其融入多目标优化、博弈论或强化学习等高级决策框架中,以增强模型的实际应用价值与理论深度。

70,040

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧