在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;

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-09-21
1、结构体变量是可以直接赋值的。定义结构体类型,然后用这个类型定义出来的变量就是结构体变量。
2、C语言在相同类型的变量间赋值时是直接内存复制的,即将他们的内存进行复制,这里因为同样结构体变量,属于同一种变量,所以赋值时是按照他们的内存分布来直接拷贝的。
第2个回答  推荐于2017-10-14
可以的,同类型的结构体变量可以。比如:
struct test a,b;
a=b;//这样可以的。
如果是不同的类型,但是结构体没数据类型一样就要用memcpy拷贝内存(头文件string.h)。例如:
struct test1 a;本回答被提问者采纳

在C语言中.结构体变量之间可以相互赋值吗
所以两个一样的结构变量可以直接赋值。但是如果结构成员中有指针,且指针指向的地址大小不一样,是不能直接赋值的。

在C语言中。结构体变量之间可以相互赋值吗?
可以直接赋值。定义结构体类型,然后用这个类型定义出来的变量就是结构体变量。C语言在相同类型的变量间赋值时是直接内存复制的,即将他们的内存进行复制,这里因为同样结构体变量,属于同一种变量,所以赋值时是按照他们的内存分布来直接拷贝的。举例:voidmain(){ STUstu1={0,10};STUtemp={12...

c语言结构体能否整体赋值
可以的,但需要保证是具有相同结构的结构体变量。可以将一个结构体变量的值赋给另一个具有相同结构的结构体变量。如student1和student2都是student类型的变量,可以这样赋值:student1= student2;假设申明了两个成员列表完全一样的两个结构体,编译器会当作两个完全不同的类型,即使他们的成员列表是一样...

在c语言标准中结构体之间是否可以直接赋值?
在结构体内部,相同类型的变量之间可以相互赋值。例如,你可以将一个结构体变量的成员赋值给另一个结构体变量的相应成员。结构体指针的使用也与普通指针类似,可以指向结构体并访问其成员。然而,当结构体指针带有const修饰符时,指针本身或指向的内容就不能被修改。例如,`struct Per const *p = &p1;`...

c语言赋值是什么?
C语言中的结构体变量可以用另一个变量对其进行赋值或初始化。简单结构体(不包含指针成员)直接赋值没有问题。但是稍微复杂一点的结构体里面会有指针成员,那么以上的浅拷贝则会有问题。赋值会直接将结构体的指针变量被赋值,赋值之前其所指向的内存单元丢失,赋值之后若该指针指向的内存单元被其它指针释放掉...

C语言中的结构体,同一个结构体,成员之间能进行比较吗?如大小关系,赋值...
两个相同结构体变量之间可以直接进行赋值,但是不能直接进行比较与其他运算 如果想进行比较与其他运算的话,需要进行运算符重载。结构体在内存当中是连续存储的,至于高位或者低位什么的~~我没太明白你说的是什么意思?能不能具体一点~~

c语言中结构体的优点
首先结构体可以在一个结构中声明不同的数据类型,第二相同结构的结构体变量是可以相互赋值的,而数组是做不到的,因为数组是单一数据类型的数据集合,它本身不是数据类型(而结构体是),数组名称是常量指针,所以不可以做为左值进行运算,所以数组之间就不能通过数组名称相互复制了,即使数据类型和数组大小...

...结构体变量x的内容赋值给goods[num](结构体数组)??
可以,在C语言中,将一个结构体变量赋值给另一个结构体变量等同于将该结构体内存中的值原样拷贝到另一个结构体中。

c语言基础语法——结构体
结构体变量的创建,如 struct book library;,由编译器根据结构体模板分配内存空间。访问结构体成员使用点运算符,例如 library.title。结构体成员初始化需与成员类型匹配,静态存储时期初始化值必须为常量表达式。结构体变量可以相互整体赋值,但输入输出时需分别指定成员。理解结构体声明、变量定义、初始化和...

C语言怎么给结构体里的结构体赋值?
c里面是不能这样赋值的, 这种方式只有在定义的时候初始化才可以 如果 int a[][2] = { 2,2}这是正确的,但是定义数组之后再 a = { 2,2}是不正确的, 你还是一个一个赋值吧. 另外说明一下吧, 定义的时候是给变量申请内存, 编译器会把你初始话的值赋值到内存, 但是如果 以后在赋值的时候,...

相似回答