本文博客链接

结构体

在实际问题中,一组数据可能具有不同的数据类型。假设要存储班上同学的信息,我们需要存储他(她)的姓名、性别、学号。我们希望有一种数据格式将所有信息存储到一个单元中。数组不能完成这项任务。而C++中的结构体可以满足要求。

struct information
{string name;string gender;int number;
};

结构体声明不会创建任何结构体的实例。本示例中的结构体声明只是告诉编译器information结构体看起来的样子。它本质上是创建一个名为information的新数据类型。结构体是用户定义的类型,而结构体声明定义了这种类型的数据属性。

在定义结构体时,系统对其不分配实际内存。只有定义结构体变量时,系统才为其分配内存。


结构体初始化

初始化结构体变量成员的最简单的方法是使用初始化列表。初始化列表是用于初始化一组内存位置的值列表。列表中的项目用逗号分隔并用大括号括起来。

information student = {"shangguan","女",10000};

也可以仅初始化结构体变量的部分成员。例如,如果仅知道他(她)的名字和性别,但不知道学号,则可以按以下方式定义和初始化变量:

information student = {"shangguan","女"};

这里只有 name 和 gender 成员被初始化,number 成员未初始化。但是,如果某个结构成员未被初始化,则所有跟在它后面的成员都需要保留为未初始化。使用初始化列表时,C++不提供跳过成员的方法。以下语句试图跳过 gender 成员的初始化。这是不合法的。

information student = {"shangguan",10000};//非法

还有一点很重要,在C++11之前不能在结构体声明中初始化结构体成员,因为结构体声明只是创建一个新的数据类型,还不存在这种类型的变量。例如,以下声明是非法的:

struct information
{string name;string gender;int number = 10000;
};

C++11

但是,从C++11之后,编译器就支持在结构体的定义时进行成员初始化。

与数组一样,C++11也支持将列表初始化用于结构,且等号(=)是可选的。

information student {"shangguan","女",10000};

其次,如果大括号内未包含任何东西,各个成员都将被设置为零。


备注:本人不能保证该文章和该文章中的代码无错误、无缺陷,请自行判断后使用。如遇到问题请联系本人。转载请标明出处。

参考文章:

  • 《C++ Primer Plus(第六版)中文版》Stephen Prata 著
  • C++结构体完全攻略(超详细)
  • C++11允许定义结构体时给成员赋初始值
  • C++11就地初始化与列表初始化

浅谈C++结构体初始化相关推荐

  1. go结构体初始化_浅谈golang结构体偷懒初始化

    运行一段程序,警告: service/mysqlconfig.go:63::error: golang.guazi-corp.com/tools/ksql-runner/model.CreatingM ...

  2. FFmpeg:浅谈 AVFrame 结构体

    成员变量 struct AVFrame 是一个很基础的类型,顾名思义,主要用来管理解码后的音视频数据: 视频:一个 AVFrame 对象可存储一帧图像. 音频:一个 AVFrame 对象可存储若干个采 ...

  3. java对比swith和if的不同,浅谈选择结构if语句和switch语句的区别

    1.选择结构if语句格式及其使用 A:if语句的格式: if(比较表达式1) { 语句体1; }else if(比较表达式2) { 语句体2; }else if(比较表达式3) { 语句体3; } . ...

  4. Go 学习笔记(33)— Go 自定义类型 type(自定义结构体、结构体初始化、结构体内嵌、自定义接口)

    1. 自定义类型格式 用户自定义类型使用关键字 type ,其语法格式是: type newType oldType oldType 可以是自定义类型.预声明类型.未命名类型中的任意一种. newTy ...

  5. c++ 结构体初始化_【干货】c语言基础语法——结构体

    1.关于C语言结构体的引入 学习环境搭建1_Linux C语言_嵌入式开发工程师-创客学院​www.makeru.com.cn 在实际问题中有时候我们需要几种数据类型一起来修饰某个变量. 例如一个学生 ...

  6. c++ 结构体初始化_STM32入门系列-使用库函数点亮LED,LED初始化函数

    要点亮LED,需要完成LED的驱动, 在工程模板上新建一个led.c和led.h文件,将其存放在led文件夹内.这两个文件需要我们自己编写. 通常xxx.c文件用于存放编写的驱动程序,xxx.h文件用 ...

  7. 浅谈“三层结构”原理与用意(转帖)

    浅谈"三层结构"原理与用意 序 在刚刚步入"多层结构"Web应用程序开发的时候,我阅读过几篇关于"asp.net三层结构开发"的文章.但其多 ...

  8. linux下C结构体初始化

    引子 在看Linux netlink部分的时候看到了这样的写法 struct netlink_kernel_cfg cfg = {.groups = RTNLGRP_MAX,.input = rtne ...

  9. 汇编——从一道题目浅谈分支结构

    浅谈分支结构 程序的分支结构是非常常见的,本文将通过一道题浅谈汇编里的分支结构. 题目 程序执行是,显示提示信息"Please input a string (length<9):&q ...

最新文章

  1. library “libopencv_java4.so“ not found“
  2. string与stringBuilder的效率与内存占用实测
  3. python 重载的实现(single-dispatch generic function)
  4. Java FilterInputStream skip()方法与示例
  5. phpcmsV9 关于phpcms根目录下ico图标,改了没效果的解决办法?
  6. 解析含有资源类型的字符串
  7. 在linux中,强行中断程序 kill命令
  8. 【知识兔】Excel教程小案例之字帖制作
  9. WPA之一次第三方软件导致的白屏问题分析
  10. Google广告分类体系
  11. SDN开源框架:蝇量级选手Dragonflow究竟解决了什么问题
  12. mybatis根据时间查询最新一条数据
  13. 网络视频服务器与数字硬盘录像机的区别
  14. 读取太阳紫外辐照谱数据
  15. 计蒜客习题:骑车比赛
  16. MathType可以和哪些Microsoft Office版本一起使用?
  17. 使用YonBuilder移动开发平台开发视频会议App
  18. 前端性能优化(二)01-页面性能优化之浏览器——浏览器的主要作用 浏览器的组成结构
  19. 控制算法-模型预测MPC
  20. Spring data JPA 之 Jackson 在实体里面的注解详解

热门文章

  1. 《你不可不知的人性》刘墉 读书笔记(三)
  2. 【自用】国科大杭高院英语慕课学习(2023-4)
  3. 计算机应用财会,按计算机应用分类,计算机在财务管理方面的应用属于()。
  4. 手机闹钟html,普通闹钟.html · 黄杰琪/app_ Smarter Alarm - Gitee.com
  5. 实时准确高效动态检测确保铁路运行安全——TFDS、TVDS、TEDS检测系统
  6. mysql 表 disabled_elementui 表格数据如何设置按钮的 disabled 属性
  7. ElementUI Tag标签的一些问题及解决方法
  8. oracle数据回流,页面的回流与重绘
  9. 下一站,Embodied AI
  10. 【人工智能】蚁群算法(密恐勿入)