C语言中两个相同类型的结构体变量之间是可以相互直接赋值的

时间:2021-01-14 13:59:01
C语言中,在相同类型的变量间赋值时是直接内存复制的,即将他们的内存进行复制,而两个同类型的结构体变量属于同一种变量,所以赋值时是按照他们的内存分布来直接拷贝的。
所以,在C语言中两个相同类型的结构体变量之间是可以相互赋值的。但是要注意指针的浅层复制问题

下面是一个简单的验证代码:
#include <stdio.h>  
#include
<stdlib.h>
#include
<string.h>
#include
<stdlib.h>
struct test
{
int a;
int b;
char ss[10];
};

struct test2
{
int a;
int b;
char * ss;
};

int main()
{
struct test t1 = {1, 2, "hello"};
struct test t2;
t2
= t1;
strcpy(t1.ss,
"张汉青");
printf(
"%d, %d, %s\n", t2.a, t2.b, t2.ss);

struct test2 t3;
t3.ss
= (char *)malloc(10);
t3.a
=1;
t3.b
=2;
strcpy(t3.ss,
"hello");
struct test2 t4;
t4
=t3;
strcpy(t3.ss,
"张汉青");
printf(
"%d,%d, %s\n",t4.a,t4.b,t4.ss);

return 0;
}

 

希望对你有所帮助,如有不正确的地方,还请指教。。多谢~~