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,"张汉青");
c语言中structprintf("%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);
return0;
}
希望对你有所帮助,如有不正确的地⽅,还请指教。。多谢~~
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论