C结构体赋值

selooloo 2010-06-06 10:06:27
C中结构体间可以直接赋值吗?比如struct A a,b; b=a;

C++里有默认复制构造函数,C里采用的是相同的机制吗?

因为编译器即支持C,又支持C++,有点迷糊了
...全文
425 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
franky1006 2011-12-21
  • 打赏
  • 举报
回复
结构可以在定义的时候附初值
huandfly 2010-06-07
  • 打赏
  • 举报
回复
宏定义是干啥用的!
cescfay 2010-06-07
  • 打赏
  • 举报
回复
尽量采用memcpy吧 还真没用过这样的方式
hongxuebiao 2010-06-07
  • 打赏
  • 举报
回复
应该避免这样用,尤其是在后续编写程序中自己都会乱,可以考虑指针
zzbinfo 2010-06-07
  • 打赏
  • 举报
回复
我一般不这么用
lyramilk 2010-06-07
  • 打赏
  • 举报
回复
[Quote=引用楼主 selooloo 的回复:]
C中结构体间可以直接赋值吗?比如struct A a,b; b=a;

C++里有默认复制构造函数,C里采用的是相同的机制吗?

因为编译器即支持C,又支持C++,有点迷糊了
[/Quote]
MinGW-gcc是个纯C的。可以帮助你检验。
周药师 2010-06-07
  • 打赏
  • 举报
回复
淡定。。。
cattycat 2010-06-07
  • 打赏
  • 举报
回复
这种赋值是直接浅拷贝的
selooloo 2010-06-07
  • 打赏
  • 举报
回复
谢谢各位帅哥和美女的解答,看来答案是肯定的了,就是不知道具体实现细节。
LS讲的TCPL是一本书吗
kkbel 2010-06-07
  • 打赏
  • 举报
回复
c++不能直接赋值
ForestDB 2010-06-07
  • 打赏
  • 举报
回复
可以,而且就是类似“浅拷贝”的概念,所以下面的东东要小心copy。

struct student {
int id;
char * name;
};

赋值后name指向同一区域(this is why C++ has a copy-constructor)。
  • 打赏
  • 举报
回复
节约调用函数,呵呵,写错了!
  • 打赏
  • 举报
回复
[Quote=引用 22 楼 huandfly 的回复:]

宏定义是干啥用的!
[/Quote]

可以定义一些常量值,
也可以定义一些简单,频繁使用的一些操作,为了节约调用库函数带来的一点点时间!
cxxer 2010-06-06
  • 打赏
  • 举报
回复
结构的合法操作只有几种:作为一个整体复制和赋值,能过&运算符取地址,访问其成员。其中,复制和赋值包括向函数传递参数以及从函数返回值。结构之间不可以进行比较。可以用一个常量成员值列表初始化结构,自动结构也可以通过赋值进行初始化。《TCPL》6.2
cxxer 2010-06-06
  • 打赏
  • 举报
回复
结构体可以直接赋值。
happytang 2010-06-06
  • 打赏
  • 举报
回复
mm,你的理解太狭隘;我的回复楼主应该明白;简单的你就不用解释了
z569362161 2010-06-06
  • 打赏
  • 举报
回复
我的理解就是最好不要直接赋值。

谁都记不住,可以避免出错
goodluckyxl 2010-06-06
  • 打赏
  • 举报
回复
可以赋值的啊
差不多就是memcpy
yuanzhang198711 2010-06-06
  • 打赏
  • 举报
回复
楼主可以试试,但是尽量少用,保持一种良好的编程风格。
z569362161 2010-06-06
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 happytang 的回复:]
只要是相同类型的结构体变量可以整体赋值
是否安全在于最后的使用
[/Quote]

里面没有指针应该没问题。因为指针才有地址
加载更多回复(7)

69,371

社区成员

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

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