浅谈C++结构体初始化
本文博客链接
结构体
在实际问题中,一组数据可能具有不同的数据类型。假设要存储班上同学的信息,我们需要存储他(她)的姓名、性别、学号。我们希望有一种数据格式将所有信息存储到一个单元中。数组不能完成这项任务。而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++结构体初始化相关推荐
- go结构体初始化_浅谈golang结构体偷懒初始化
运行一段程序,警告: service/mysqlconfig.go:63::error: golang.guazi-corp.com/tools/ksql-runner/model.CreatingM ...
- FFmpeg:浅谈 AVFrame 结构体
成员变量 struct AVFrame 是一个很基础的类型,顾名思义,主要用来管理解码后的音视频数据: 视频:一个 AVFrame 对象可存储一帧图像. 音频:一个 AVFrame 对象可存储若干个采 ...
- java对比swith和if的不同,浅谈选择结构if语句和switch语句的区别
1.选择结构if语句格式及其使用 A:if语句的格式: if(比较表达式1) { 语句体1; }else if(比较表达式2) { 语句体2; }else if(比较表达式3) { 语句体3; } . ...
- Go 学习笔记(33)— Go 自定义类型 type(自定义结构体、结构体初始化、结构体内嵌、自定义接口)
1. 自定义类型格式 用户自定义类型使用关键字 type ,其语法格式是: type newType oldType oldType 可以是自定义类型.预声明类型.未命名类型中的任意一种. newTy ...
- c++ 结构体初始化_【干货】c语言基础语法——结构体
1.关于C语言结构体的引入 学习环境搭建1_Linux C语言_嵌入式开发工程师-创客学院www.makeru.com.cn 在实际问题中有时候我们需要几种数据类型一起来修饰某个变量. 例如一个学生 ...
- c++ 结构体初始化_STM32入门系列-使用库函数点亮LED,LED初始化函数
要点亮LED,需要完成LED的驱动, 在工程模板上新建一个led.c和led.h文件,将其存放在led文件夹内.这两个文件需要我们自己编写. 通常xxx.c文件用于存放编写的驱动程序,xxx.h文件用 ...
- 浅谈“三层结构”原理与用意(转帖)
浅谈"三层结构"原理与用意 序 在刚刚步入"多层结构"Web应用程序开发的时候,我阅读过几篇关于"asp.net三层结构开发"的文章.但其多 ...
- linux下C结构体初始化
引子 在看Linux netlink部分的时候看到了这样的写法 struct netlink_kernel_cfg cfg = {.groups = RTNLGRP_MAX,.input = rtne ...
- 汇编——从一道题目浅谈分支结构
浅谈分支结构 程序的分支结构是非常常见的,本文将通过一道题浅谈汇编里的分支结构. 题目 程序执行是,显示提示信息"Please input a string (length<9):&q ...
最新文章
- library “libopencv_java4.so“ not found“
- string与stringBuilder的效率与内存占用实测
- python 重载的实现(single-dispatch generic function)
- Java FilterInputStream skip()方法与示例
- phpcmsV9 关于phpcms根目录下ico图标,改了没效果的解决办法?
- 解析含有资源类型的字符串
- 在linux中,强行中断程序 kill命令
- 【知识兔】Excel教程小案例之字帖制作
- WPA之一次第三方软件导致的白屏问题分析
- Google广告分类体系
- SDN开源框架:蝇量级选手Dragonflow究竟解决了什么问题
- mybatis根据时间查询最新一条数据
- 网络视频服务器与数字硬盘录像机的区别
- 读取太阳紫外辐照谱数据
- 计蒜客习题:骑车比赛
- MathType可以和哪些Microsoft Office版本一起使用?
- 使用YonBuilder移动开发平台开发视频会议App
- 前端性能优化(二)01-页面性能优化之浏览器——浏览器的主要作用 浏览器的组成结构
- 控制算法-模型预测MPC
- Spring data JPA 之 Jackson 在实体里面的注解详解
热门文章
- 《你不可不知的人性》刘墉 读书笔记(三)
- 【自用】国科大杭高院英语慕课学习(2023-4)
- 计算机应用财会,按计算机应用分类,计算机在财务管理方面的应用属于()。
- 手机闹钟html,普通闹钟.html · 黄杰琪/app_ Smarter Alarm - Gitee.com
- 实时准确高效动态检测确保铁路运行安全——TFDS、TVDS、TEDS检测系统
- mysql 表 disabled_elementui 表格数据如何设置按钮的 disabled 属性
- ElementUI Tag标签的一些问题及解决方法
- oracle数据回流,页面的回流与重绘
- 下一站,Embodied AI
- 【人工智能】蚁群算法(密恐勿入)