c语言结构体能否整体赋值

共用体可以整体赋值,那结构体呢?可否对结构体整体赋值?即先定义两个同类型的结构体变量,给其中一个赋初值,再把这个被赋了初值的结构体变量赋值给另一个结构体变量,

可以的,但需要保证是具有相同结构的结构体变量。

可以将一个结构体变量的值赋给另一个具有相同结构的结构体变量。如student1和student2都是student类型的变量,可以这样赋值:student1= student2;

假设申明了两个成员列表完全一样的两个结构体,编译器会当作两个完全不同的类型,即使他们的成员列表是一样的,令两个结构体的变量间赋值,则是非法的。

扩展资料:

结构体的相关操作规则:

1、可以引用一个结构体变量中的一个成员的值:

例如, student1.num表示结构体变量student1中的成员的值,student1.num的值为10001。引用结构体变量中成员的一般方式为:结构体变量名.成员名。例如可以这样对变量的成员赋值:student1.num=10010;

2、不能将一个结构体变量作为一个整体进行输入和输出:

例如,已定义student1和student2为结构体变量,并且它们已有值。不能企图这样输出结构体变量中的各成员的值:cin>>student1; 只能对结构体变量中的各个成员分别进行输入和输出。

参考资料来源:百度百科-结构体

参考资料来源:百度百科-结构体类型

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-09-01
可以是可以,但它有一个条件,这里的赋初值不是想别的数据类型(如 int a;a=5;)它必须是对结构体中的每个成员以此赋值的,你可以从楼上所写的例子看出这一点。
将一个结构体变量的值直接赋给另外一个结构体变量的时候,这两个结构体必须是相同结构体名。本回答被提问者采纳
第2个回答  2008-08-19
可以的:

#include "stdio.h"
struct date
{
int i;
float x;
} d1={10,12.5};

void main()
{
struct date d2;
d2=d1;
printf("%d, %f\n",d2.i,d2.x);

}
第3个回答  2019-11-30
相同类型的结构体是可以直接赋值的,这是ansi/iso
c规定的。ansi/iso
c规定的合法行为,编译器是必须支持的。
但不能进行比较,例如
if
(stu[1]
==
stu[2])是不允许的。
这种问题不能靠试验获得准确的答案,因为你用的编译器支持并不表明其他编译器也支持。
第4个回答  2019-12-23
结构体可以整体赋值为0,如果要给数组赋值就比较麻烦,用指针会好一点

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

结构体二维数组的赋值与定义
结构体二维数组的赋值可对结构体变量的成员逐个赋值,这种方式和数组相像,数组就是逐个元素逐一赋值,不同于数组,标准C中结构体变量可以整体赋值。结构体二维数组是由一系列具有相同类型或不同类型的数据构成的数据集合,叫做结构,在C语言中,结构体指的是一种数据结构,是C语言中聚合数据类型的一类,结...

C语言中结构体中的数组,不能直接赋值吗
数组不能整体赋值,需要逐个元素赋值,但是如果这个数组是一个结构体的成员,可以通过结构体之间的直接赋值间接达到数组整体赋值的效果,即:t1.mark=t2.mark;\/\/非法,数组不能直接整体赋值。t1=t2;\/\/合法,在此之后,t2.mark数组将被整体复制到t1.mark数组。

在c语言标准中结构体之间是否可以直接赋值?
结构体在C语言中用于组合多个数据类型,它们能够存放不同或相同类型的多个数据。在定义结构体之后,可以通过初始化结构体变量或使用结构体数组来操作它们。结构体定义只表示一种类型,并没有为结构体成员分配实际内存空间。因此,直接对结构体进行赋值是不正确的。例如,定义一个名为“Tea”的结构体,它仅...

C\/C++编程笔记:C语言结构体想要直接赋值,应该如何实现?
从结果可以看出,C语言中结构体的直接赋值是可行的。我们可以通过查看struct_assign()函数的汇编实现,从底层了解C语言是如何实现两个结构体之间的赋值操作的。这段汇编比较简单,由于结构体的对齐特性,sizeof(struct Foo)为16,通过四次movl操作将foo1的结构体内容拷贝到结构体foo2中。从汇编上可以看出...

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

c语言题库中的一道题有点疑问
传地址,是实参将自身存储的位置给形式参数,本质上它们访问的是同一个存储单元,所以形式参数的改变会影响实参的值。本题传递的是结构体,结构体名代表的是地址,所以该函数传递的是地址。所以f函数中对t的值得赋予改变了主函数中a的值。最后输出的结果就是运行结果了。

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

结构体变量如何赋值可以直接赋值吗
结构体变量是可以直接赋值的;定义结构体类型,然后用这个类型定义出来的变量就是结构体变量;C语言在相同类型的变量间赋值时是直接内存复制的,即将他们的内存进行复制,这里因为同样结构体变量,属于同一种变量,所以赋值时是按照他们的内存分布来直接拷贝的。

怎么把一个结构体中的数据复制到另一个相同类型的结构体数组中
C语言中结构体不能直接整体赋值。可以使用memcpy函数:void *memcpy(void *dest, const void *src, size_t n);其中dest就是需要赋值到的地址, src就是复制源, n是需要复制的字节数。所以是 memcpy(&P_dest[i], &dest, sizeof(dest));修正:好吧,又查了下C是支持结构体直接赋值的,但...

相似回答