C语言中结构体变量之间赋值
近期,我阅读了某新员工小刘写的C语言代码,发现其对结构体变量之间的赋值不是非常熟悉。
对于两个同样类型的结构体变量,他均採用的是逐个成员变量直接赋值的形式。例如以下的代码演示样例:
如上代码所看到的,tEmployeeInfoSrc和tEmployeeInfoDest是两个类型同样的结构体变量,tEmployeeInfoSrc(源结构体变量)中的各个成员变量已赋初值。现要使tEmployeeInfoDest(目的结构体变量)中的各个成员变量的值与tEmployeeInfoSrc中相应成员变量的值同样。小刘採用的方式是各个成员变量一一赋值。这尽管能够确保赋值操作的正确性,但并非最优的方法。
针对以上代码,我们能够稍加改动。例如以下所看到的:
如上代码所看到的,我们能够直接将源结构体变量的值赋给目的结构体。将原来的三行代码缩减为一行。当一个结构体的成员变量较多时,各个变量逐一赋值显然过于繁琐。即採用直接赋值的方法更加简洁直观。
两个同样类型的结构体变量相互赋值的情况还有好多种,例如以下代码所看到的:
指针和结构体是C语言的精华和难点所在,大家一定要在实战中学会它们的用法。
(本人微博:http://weibo.com/zhouzxi?topnav=1&wvr=5。微信号:245924426,欢迎关注!
)
C语言中结构体变量之间赋值的更多相关文章
- C语言中两个相同类型的结构体变量之间是可以相互直接赋值的
C语言中,在相同类型的变量间赋值时是直接内存复制的,即将他们的内存进行复制,而两个同类型的结构体变量属于同一种变量,所以赋值时是按照他们的内存分布来直接拷贝的.所以,在C语言中两个相同类型的结构体变量 ...
- C语言中结构体赋值问题的讨论
今天帮师姐调一个程序的BUG,师姐的程序中有个结构体直接赋值的语句,在我印象中结构体好像是不能直接赋值的,正如数组不能直接赋值那样,我怀疑这个地方有问题,但最后证明并不是这个问题.那么就总结一下C语言 ...
- C语言中结构体赋值问题的讨论(转载)
今天帮师姐调一个程序的BUG,师姐的程序中有个结构体直接赋值的语句,在我印象中结构体好像是不能直接赋值的,正如数组不能直接赋值那样,我怀疑这个地方有问题,但最后证明并不是这个问题.那么就总结一下C语言 ...
- C语言中结构体对齐问题
C语言中结构体对齐问题 收藏 关于C语言中的结构体对齐问题 1,比如: struct{short a1;short a2;short a3;}A;struct{long a1;short a2;}B; ...
- 6. Go 语言中结构体的使用
1. 结构体的定义格式 在go语言中结果的定义格式如下: 123 type structName struct { filedList} 列子如下: 1234 type Person struct { ...
- Go语言中结构体的使用-第2部分OOP
1 概述 结构体的基本语法请参见:Go语言中结构体的使用-第1部分结构体.结构体除了是一个复合数据之外,还用来做面向对象编程.Go 语言使用结构体和结构体成员来描述真实世界的实体和实体对应的各种属性. ...
- Go语言中结构体的使用-第1部分结构体
1 概述 结构体是由成员构成的复合类型.Go 语言使用结构体和结构体成员来描述真实世界的实体和实体对应的各种属性.结构体成员,也可称之为成员变量,字段,属性.属性要满足唯一性.结构体的概念在软件工程上 ...
- c语言中结构体指针
1.指向结构体的指针变量: C 语言中->是一个总体,它是用于指向结构体,如果我们在程序中定义了一个结构体,然后声明一个指针变量指向这个结构体.那么我们要用指针取出结构体中的数据.就要用到指向运 ...
- 关于c语言中结构体的初始化
1.先定义结构体类型后再定义结构体变量: 格式为:struct 结构体名 变量名列表: struct book s1,s2,*ss://注意这种之前要先定义结构体类型后再定义变量: 2.在定义结构体类 ...
随机推荐
- 【C语言】控制台窗口图形界面编程(二)窗口信息和填充缓冲区
目录 00. 目录 01. COORD结构体 02. SMALL_RECT结构 03. CONSOLE_SCREEN_BUFFER_INFO结构体 04. GetConsoleScreenBuffer ...
- 笔试算法题(48):简介 - A*搜索算法(A Star Search Algorithm)
A*搜索算法(A Star Search Algorithm) A*算法主要用于在二维平面上寻找两个点之间的最短路径.在从起始点到目标点的过程中有很多个状态空间,DFS和BFS没有任何启发策略所以穷举 ...
- 1 SQL 数据库和SQL
1 数据库和SQL 1-1 数据库是什么 将大量数据保存起来,通过计算机加工而成的可以进行高效访问的数据集合称为数据库(Database, DB). 法则 用来管理数据库的计算机系统称为数据库管理系统 ...
- thinkphp3.2使用PHPQrcode实现二维码
Thinkphp中没有二维码相关的生成库,百度有不少工具和库 这里就实例一下通过think3.2搭配phpqrcode来完成生成二维码的功能. 至于phpQrcode库文件 百度很容易找到这里也给大家 ...
- 实现基于pam认证的vsftpd
1 需求 使用指定虚拟用户Allen与Barry登录ftp,认证的源是mysql服务器: Allen可以上传文件,Barry不可以上传文件: 2 环境 [root@centos7 ~]# cat /e ...
- 初学微信小程序 TodoList
微信小程序的学习 微信小程序的开始尝试 TodoList 微信开发者工具生成 目录如下: . |-- app.js |-- app.json |-- app.wxss |-- pages | |-- ...
- 关于Python构建微服务的思考(一)
一:什么是微服务? 微服务是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成. 系统中的各个微服务可被独立部署,各个微服务之间是松耦合的. 每个微服务仅关注于完成一件任务并很好地完成该任务. ...
- 使用js生成条形码以及二维码
一.用js生成条形码这种业务场景不是很常见的,最近刚好又接到这种需求 Google一下,发现github还真有这方面的轮子,感谢github,省去了我们很多造轮子的过程, 好了言归正传,首先引入jsb ...
- Java AOP
AOP 今天我要和大家分享的是 AOP(Aspect-Oriented Programming)这个东西,名字与 OOP 仅差一个字母,其实它是对 OOP 编程方式的一种补充,并非是取而代之.翻译过来 ...
- A Small Definition of Big Data
A Small Definition of Big Data The term "big data" seems to be popping up everywhere these ...