C语言中结构体的直接赋值
一直记得C语言中,结构体是不可以直接赋值的。我问了三个同学,都说在C++中可以,在C语言中不可以,需要逐一成员赋值或者用memcpy函数。
我测试了一下如下的程序:
- #include <stdio.h>
- #include <stdlib.h>
- struct test
- {
- int a;
- int b;
- char ss[10];
- };
- int main()
- {
- struct test t1 = {1, 2, "hello"};
- struct test t2;
- t2 = t1;
- printf("%d, %d, %s\n", t2.a, t2.b, t2.ss);
- return 0;
- }
#include <stdio.h>
#include <stdlib.h>
struct test
{
int a;
int b;
char ss[10];
};
int main()
{
struct test t1 = {1, 2, "hello"};
struct test t2;
t2 = t1;
printf("%d, %d, %s\n", t2.a, t2.b, t2.ss);
return 0;
}
答案是可以直接赋值的。
上网上看了以下,找到一个讨论的帖子,有一些错误或正确的讨论:http://topic.csdn.net/u/20070627/15/a6b39dfa-2ab9-473e-96c3-4054800cb4c1.html
不过里面要是有指正成员,进行了动态分配,指向了某一块内存,那么赋值的时候要注意,不能简单的直接赋值了。
公司简介
聚拓互联(http://www.ejutuo.com).Net平台至强虚拟主机供应商,是领先的互联网基础应用服务提供商,主要面向全球客户提供域名注册、国内、香港/美国虚拟主机、企业邮箱、智能建站、虚拟服务器(VPS)、服务器租用、服务器托管等丰富的网络产品服务。
聚拓互联的快速发展与其企业文化密不可分,易网人秉持“团结互助、敬业负责、恪守信誉、积极进取、勇于创新”的企业文化,汇聚了行业内的大量专业人士,拥有多位国内顶尖的linux/freeBSD/unix经验的系统工程师、微软认证工程师和网络安全技术人才。核心团队均为该行业从业多年的专业人士,拥有丰富行业经验和较高威望,并不断改革创新,以满足客户多元化需求为己任,不断进取。 同时,易网坚守 “专业品质、服务为本、诚信经营、恪守信誉”的核心价值观,为客户提供多样、安全、稳定、放心的产品。
浙公网安备 33010602011771号