C语言中结构体变量之间赋值

最近,我阅读了某新员工小刘写的C语言代码,发现其对结构体变量之间的赋值不是很熟悉。对于两个相同类型的结构体变量,他均采用的是逐个成员变量直接赋值的形式。如下的代码示例:

如上代码所示,tEmployeeInfoSrc和tEmployeeInfoDest是两个类型相同的结构体变量,tEmployeeInfoSrc(源结构体变量)中的各个成员变量已赋初值。现要使tEmployeeInfoDest(目的结构体变量)中的各个成员变量的值与tEmployeeInfoSrc中对应成员变量的值相同。小刘采用的方式是各个成员变量一一赋值。这虽然可以确保赋值操作的正确性,但并不是最优的方法。
        针对以上代码,我们可以稍加修改,如下所示:

如上代码所示,我们可以直接将源结构体变量的值赋给目的结构体,将原来的三行代码缩减为一行。当一个结构体的成员变量较多时,各个变量逐一赋值显然过于繁琐,即采用直接赋值的方法更加简洁直观。
 
       两个相同类型的结构体变量相互赋值的情况还有好多种,如下代码所示:

指针和结构体是C语言的精华和难点所在,大家一定要在实战中学会它们的使用方法。

(本人微博:http://weibo.com/zhouzxi?topnav=1&wvr=5,微信号:245924426,欢迎关注!)

时间: 2024-10-27 06:48:35

C语言中结构体变量之间赋值的相关文章

语言中结构体变量和结构体类型的定义

1.结构体类型定义 定义方式1: Typedef struct  LNode {    int  data;  // 数据域    struct LNode   *next;  // 指针域 } *LinkList; 定义方式2: struct  LNode {    int  data;  // 数据域    struct LNode   *next;  // 指针域 }: Typedef struct  LNode  *LinkList; 以上两个定义方式是等价的,是将*LinkList定义

C语言中两个相同类型的结构体变量之间是可以相互直接赋值的

C语言中,在相同类型的变量间赋值时是直接内存复制的,即将他们的内存进行复制,而两个同类型的结构体变量属于同一种变量,所以赋值时是按照他们的内存分布来直接拷贝的.所以,在C语言中两个相同类型的结构体变量之间是可以相互赋值的.但是要注意指针的浅层复制问题. 下面是一个简单的验证代码: #include <stdio.h> #include <stdlib.h> #include <string.h> #include <stdlib.h> struct test

C语言中结构体赋值问题的讨论(转载)

今天帮师姐调一个程序的BUG,师姐的程序中有个结构体直接赋值的语句,在我印象中结构体好像是不能直接赋值的,正如数组不能直接赋值那样,我怀疑这个地方有问题,但最后证明并不是这个问题.那么就总结一下C语言中结构体赋值的问题吧: 结构体直接赋值的实现 下面是一个实例: #include <stdio.h> struct Foo { char a; int b; double c; }foo1, foo2; //define two structs with three different field

C语言中结构体参数变量的传递

c语言  结构体  函数  参数  传递 一.前言 本文中的程序实现对员工信息结构体字段赋值并打印出来的功能.该结构体的定义如下: // 员工信息结构体 typedef struct {        INT8       szEmployeeName[100];     // 员工姓名        UINT16  iEmployeeAge;                    // 员工年龄        UINT32  iEmployeeNo;                      

C语言中结构体在函数中的应用

一.结构体与函数参数结构体作函数参数可分为传值与传指针.1.传值时结构体参数会被拷贝一份,在函数体内修改结构体参数成员的值实际上是修改调用参数的一个临时拷贝的成员的值,这不会影响到调用参数.在这种情况下,由于涉及到结构体参数的拷贝,程序空间及时间效率都会受到影响,所以这种方法基本不用.例如:typedef struct tagSTUDENT{char name[20];int age;}STUDENT; void fun(STUDENT stu){printf("stu.name=%s,stu.

c语言中结构体指针

1.指向结构体的指针变量: C 语言中->是一个整体,它是用于指向结构体,假设我们在程序中定义了一个结构体,然后声明一个指针变量指向这个结构体,那么我们要用指针取出结构体中的数据,就要用到指向运算符"->". 举例说明: struct SunLL { int a; int b; int c; }; struct SunLL  * p;               //定义结构体指针 struct SunLL A = {1,2,3};    //定义一个SunLL类型的变量A

黑马程序员--C语言中结构体-我之理解

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- 什么是结构体? “结构”是一种构造类型,它是由若干“成员”组成的.每一个成员可以是一个基本数据类型或者又是一个构造类型. 为什么要有结构类型? 结构体可以把功能相同的数据组织起来,存在一起,用的时候方便,而且在调用函数时,若 传递参数较多

黑马程序员——c语言中结构体的使用以及注意事项和实际应用

1.结构体和数组的区别①结构体:结构体可以由多个不同类型的数据构成,可以 包含int double等多种类型②数组:数组则只能由多个相同类型数据构成 2.结构体的定义①先定义结构体类型 struct Person { int age; //age height name 三个变量可以称之为结构体成员或者属性 double height; char*name; } ②根据结构体类型定义结构体变量 struct Person p={20,1.75,"tom"}; p.age=30; p.n

C语言 指向结构体变量的指针

一个指向变量的指针表示的是占内存中起始位置 一个指向结构体的变量的指针表示的是这个结构体变量占内存中的起始位置,同样它也可以指向结构体变量数组 定义结构体变量的指针: //假设已有一个结构体名为Student struct Student *pStruct // 结构体类型 * 指针名; 通过指针来引用结构体中的成员,有三种方式 demo: 1 # include <stdio.h> 2 # include <stdlib.h> 3 /* 4 1.使用->引用结构体成员 5