首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在C中将一个结构赋值给另一个结构

在C中将一个结构赋值给另一个结构
EN

Stack Overflow用户
提问于 2010-02-20 21:39:30
回答 4查看 195.8K关注 0票数 164

是否可以将结构的一个实例分配给另一个实例,如下所示:

代码语言:javascript
复制
struct Test t1;
struct Test t2;
t2 = t1;

我见过它适用于简单的结构,但它适用于复杂的结构吗?

编译器如何知道如何根据数据项的类型复制数据项,即区分int和string?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-02-20 21:41:52

如果结构是相同类型的,则为是。把它想象成一个记忆副本。

票数 170
EN

Stack Overflow用户

发布于 2010-02-20 21:41:35

可以,结构支持赋值。但是,也存在一些问题:

代码语言:javascript
复制
struct S {
   char * p;
};

struct S s1, s2;
s1.p = malloc(100);
s2 = s1;

现在,两个结构的指针都指向相同的内存块--编译器不会复制指向的数据。现在很难知道哪个结构实例拥有数据。这就是为什么C++发明了用户可定义赋值运算符的概念-您可以编写特定的代码来处理这种情况。

票数 154
EN

Stack Overflow用户

发布于 2010-02-20 21:44:36

这是一个简单的副本,就像您对memcpy()所做的那样(实际上,一些编译器实际上会为该代码生成一个对memcpy()的调用)。在C中没有“字符串”,只有指向一串字符的指针。如果您的源结构包含这样的指针,则会复制该指针,而不是字符本身。

票数 19
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2302351

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档