两个相同的结构体变量 是否可以直接赋值???

汗晕倒 2010-12-18 11:25:08
比如结构体A,里面有结构体,有指针,有各种int char 变量。现在有A a; A b; a = b; 这样赋值是否可以,安全??
...全文
4273 22 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
古楼 2011-12-15
  • 打赏
  • 举报
回复
可以直接赋值的
mojie555 2011-10-27
  • 打赏
  • 举报
回复
学习了~
汗晕倒 2010-12-19
  • 打赏
  • 举报
回复
谢谢各位了~~
varding 2010-12-18
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 shisi 的回复:]

我的是C不是C++
memcpy()函数,这个OK吧~~
[/Quote]

这样用可以的,但是你要注意内部指针的问题
qf17331733 2010-12-18
  • 打赏
  • 举报
回复
可以~ 不过最好还是
A *a;
A *b;
a=b;
汗晕倒 2010-12-18
  • 打赏
  • 举报
回复
我的是C不是C++
memcpy()函数,这个OK吧~~
bravery36 2010-12-18
  • 打赏
  • 举报
回复
有指针的情况下会指向同一个地址,如果想完全复制的话还是要自己重载赋值或拷贝函数。
無_1024 2010-12-18
  • 打赏
  • 举报
回复
在C++里面很少见到 一般都是用重载赋值运算符实现的
  • 打赏
  • 举报
回复
memcpy()函数实现吧!
赵4老师 2010-12-18
  • 打赏
  • 举报
回复
VC调试时按Alt+8,TC或BC用TD调试,打开汇编窗口看每句C对应的汇编不就啥都明白了吗。
(Linux或Unix下应该也可以在用GDB调试时,看每句C对应的汇编。)
想要从本质上理解C指针,必须学习汇编以及C和汇编的对应关系。
从汇编的角度理解和学习C语言的指针,原本看似复杂的东西就会变得非常简单!
某某9 2010-12-18
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 athenacle_ 的回复:]

在C里面的结构体不可以直接直接赋值,不过可以按元素赋值~
[/Quote]

我认为最好是这样
flysnowhite 2010-12-18
  • 打赏
  • 举报
回复
直接赋值可以,编译没有问题。编译器处理时采用位拷贝,这样两个结构体变量内的指针就指向同一个内存单元了,同时如果结构体有填充,填充的垃圾数据也原样拷贝了。而结构体内指针一般是动态分配内存和动态释放空间,这样处理很不安全。最好不要这样做。
JeffTech 2010-12-18
  • 打赏
  • 举报
回复
12楼正解
s126301 2010-12-18
  • 打赏
  • 举报
回复
可以,我记得我们老师上课有讲过
luciferisnotsatan 2010-12-18
  • 打赏
  • 举报
回复
c++里重载了赋值运算符,可以直接用 =
C里用memcpy()
Athenacle_ 2010-12-18
  • 打赏
  • 举报
回复
在C里面的结构体不可以直接直接赋值,不过可以按元素赋值~
padmepingouin 2010-12-18
  • 打赏
  • 举报
回复
如果包含指针,赋值只能实现浅拷贝。被赋值的结构体变量的指针成员与原结构体变量的指针成员指向一个地址。

#include <stdio.h>

struct s
{
int i;
char c;
void* p;
};

int main()
{
struct s s1, s2;
char * s = "rabbit is cute";
s1.i = 345;
s1.c = 'y';
s1.p = (void*)s;

s2 = s1;

printf("s2: %d, %c, %s\n", s2.i, s2.c, s2.p);
printf("s1 ptr: %d; s2 ptr: %d\n", s1.p, s2.p);

return 0;
}

输出结果是s1.p的值和s2.p的值是一样的。可见字符串没有被拷贝,两个指针指向同一个字符串。
寂寞的泡面 2010-12-18
  • 打赏
  • 举报
回复
完全可以啊,结构体变量也是变量啊。
ningto.com 2010-12-18
  • 打赏
  • 举报
回复
有指针的话不能这样分配,
如果这样分配的话就成了浅拷贝
汗晕倒 2010-12-18
  • 打赏
  • 举报
回复
指针不是分配的,指针也是指向一个已经分配好的内存~
加载更多回复(2)

70,022

社区成员

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

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