在C语言中。结构体变量之间可以相互赋值吗?
可以直接赋值。定义结构体类型,然后用这个类型定义出来的变量就是结构体变量。
C语言在相同类型的变量间赋值时是直接内存复制的,即将他们的内存进行复制,这里因为同样结构体变量,属于同一种变量,所以赋值时是按照他们的内存分布来直接拷贝的。
举例:
voidmain()
{
STUstu1={0,10};
STUtemp={12,88};
STU*p1=&stu1;
STU*p2=&temp;
printf("%d-%d\n",temp.name,temp.num);
temp=stu1;
printf("%d-%d\n",temp.name,temp.num);
temp={10,10};
printf("%d-%d\n",stu1->name,stu1->num);
printf("%ld-\n",&stu1);
printf("%ld-\n",stu1);
printf("%ld-\n",&temp);
printf("%ld-\n",temp);
change(stu1,temp);
temp=stu1;
p2=p1;
printf("%d-%d\n",p2->name,p2->num);
}
扩展资料:
C语言中变量间互相赋值很常见,例如:
inta,b;
a=b;
结构体也是变量(自定义变量),两个结构体之间直接赋值按道理应该也是可以的吧,将一个结构体对象赋值给另一个结构体对象的。
例:
#include"stdio.h"
structtest
{
inta;
intb;
intc;
char*d;
};
intmain()
{
structtestt1={1,2,3,"tangquan"};
structtestt2={0,0,0,""};
printf("%d,%d,%d,%s\r\n",t2.a,t2.b,t2.c,t2.d);
t2=t1;
printf("%d,%d,%d,%s\r\n",t2.a,t2.b,t2.c,t2.d);
return0;
}
2、C语言在相同类型的变量间赋值时是直接内存复制的,即将他们的内存进行复制,这里因为同样结构体变量,属于同一种变量,所以赋值时是按照他们的内存分布来直接拷贝的。
struct test a,b;
a=b;//这样可以的。
如果是不同的类型,但是结构体没数据类型一样就要用memcpy拷贝内存(头文件string.h)。例如:
struct test1 a;