C语言中两个相同类型的结构体变量之间是可以相互直接赋值的
Posted 青儿哥哥
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言中两个相同类型的结构体变量之间是可以相互直接赋值的相关的知识,希望对你有一定的参考价值。
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; }
希望对你有所帮助,如有不正确的地方,还请指教。。多谢~~
以上是关于C语言中两个相同类型的结构体变量之间是可以相互直接赋值的的主要内容,如果未能解决你的问题,请参考以下文章