结构体定义变量及初始化
当我们定义了结构体类型之后,可以使用结构体类型来定义变量,定义变量的方式与基本数据类型定义变量一样。假设我们定义了如下的结构体类型:
//定义结构体类型
struct reader
{
//定义结构体的成员;
char name[32];
int age;
int number;
};
我们可以用该结构体类型来定义变量,如下:
struct reader r1; //定义结构体变量
我们可以在定义结构体变量的时候,对其进行初始化,如下:
//定义结构体变量, 并初始化;
struct reader r1 = {"www123", 100, 199};
完整的测试例子如下:
程序运行结果如下:
可以看到,我们在定义变量r1的时候,在后面接着赋值运算符“=”,然后,接着需要赋值的数据。在大括号中存放赋值的数据,每个数据之间是有逗号“,”分隔开。
我们还可以在定义结构体类型的时候就定义变量,同时对其进行初始化,如下:
//定义结构体类型
struct reader
{
//定义结构体的成员;
char name[32];
int age;
int number;
}r1, r2;
此时,在定义struct reader结构体类型的时候,同时定义了变量r1和r2。而且,可以在定义变量的时候初始化,如下:
//定义结构体类型
struct reader
{
//定义结构体的成员;
char name[32];
int age;
int number;
}r1 = {"AAABBB", 99, 886}, r2 = {"www123", 100, 199};
此时,定义struct reader结构体类型的时候,定义了变量r1和r2,而且,给变量r1、r2初始化数据。程序测试代码如下:
程序运行结果如下:
可以看到,我们在定义sruct reader结构体类型的时候,定义了变量r1和r2,并且对它们进行了初始化。
在定义结构体类型的过程中,我们可以省略“结构体类型名”,但是,这样定义的结构体类型就没有名称了,只能够在定义结构体类型的时候定义变量。例如:
//定义结构体类型
struct
{
//定义结构体的成员;
char name[32];
int age;
int number;
}r1, r2 = {"www123", 100, 199};
此时,定义了一个结构体类型,但是,该结构体类型没有名称,所以,只能够在定义结构体的时候,定义变量。可以在定义变量的时候进行初始化。
这种结构体定义类型的方式不是很推荐使用,我们只需要知道有这样的定义方式就可以了。
在写代码的时候,我们都更应该给每个变量有一个明确、准确的类型名称。可以通过类型名称和变量名称,就可以知道定义这个类型和变量的一样。这样的代码才是优秀的代码。
韦凯峰 Linux C/C++ 程序设计教程,Linux 系统编程,Openwrt 系统开发,微信:13926572996,QQ:1523520001,博客:www.mylinux.vip
结构体定义变量及初始化相关推荐
- C/C++中struct结构体定义变量的3种方法及初始化
本博客整理自http://blog.csdn.net/zunfo/article/details/51494631 1.struct结构体定义 1.1.先定义结构体,然后再定义结构体变量 struct ...
- MySQL InnoDB事务结构体代码变量全攻略(附源码)
写在前面 InnoDB是MySQL的一个存储引擎,支持事务,支持非堵塞的一致性读,物理存储结构是Page,每个事务都有回滚日志,重做日志,事务还会有死锁检测,各种各样不同的锁等等. 翻看InnoD ...
- Go 学习笔记(14)— 结构体定义、实例化、初始化、匿名结构体、结构体访问、结构体作为形参、结构体指针
Go 语言中没有 "类" 的概念,也不支持 "类" 的继承等面向对象的概念.Go 语言不仅认为结构体能拥有方法,且每种自定义类型也可以拥有自己的方法. 1. 结 ...
- 结构体的赋值和初始化与取出结构体变量中的成员
1 /*结构体的赋值和初始化*/ 2 3 # include <stdio.h> 4 5 struct Student 6 { 7 int age; 8 ...
- go结构体初始化_go语言基础之结构体普通变量初始化
1.结构体 1.1.结构体类型 有时我们需要将不同类型的数据组合成一个有机的整体,如:一个学生有学号/姓名/性别/年龄/地址等属性.显然单独定义以上变量比较繁琐,数据不便于管理. 结构体是一种聚合的数 ...
- 结构体指针变量的定义
最近在STM的GPIO结构体定义中看到源代码的时候,顺便复习下结构体指针变量的定义及typedef 的使用. 1.结构体类型定义 定义方式1: Typedef struct LNode {int da ...
- MDK keil中在定义一个结构体的时候加点后面不出现结构体当中变量的提示
MDK keil中在定义一个结构体的时候加点后面不出现结构体当中变量的提示 解决办法: 1.确保已经将顶层头文件stm32f10x.h添加至当前你所写的文件内: 2.检查你自己写的文件是否已经加载到工 ...
- Go语言实例化结构体——为结构体分配内存并初始化
转自: http://c.biancheng.net/view/66.html 结构体的定义只是一种内存布局的描述,只有当结构体实例化时,才会真正地分配内存.因此必须在定义结构体并实例化后才能使用结构 ...
- 从结构体、内存池初始化到申请释放,详细解读鸿蒙轻内核的动态内存管理
摘要:本文带领大家一起剖析了鸿蒙轻内核的动态内存模块的源代码,包含动态内存的结构体.动态内存池初始化.动态内存申请.释放等. 本文分享自华为云社区<鸿蒙轻内核M核源码分析系列九 动态内存Dyna ...
最新文章
- linux常用的命令行
- 德国波恩大学于鹏组根系与微生物互惠方向招收博士研究生
- Redis cluster
- Magento2插件
- 基于ARM 构架(带MMU)的copy_from_user与copy_to_user详细分析
- Ajax — 评论列表
- lvalue-xvalue-prvalue
- 信息学奥赛一本通 1314:【例3.6】过河卒(Noip2002) | 1921:【02NOIP普及组】过河卒 | 洛谷 P1002 [NOIP2002 普及组] 过河卒
- 信息学奥赛一本通 1086:角谷猜想 | OpenJudge NOI 1.5 21
- 【Qt教程】1.4 - Qt5第一个控件 按钮QPushButton 指定父对象
- 通过stream去重_分享几种 Java8 中通过 Stream 对列表进行去重的方法
- Datalogic得利捷推出具有强大视觉系统功能的紧凑型智能相机P2X系列
- Bike Sharing Demand
- 零基础学UI设计难吗?
- 亚马逊服务器一键重装系统,如何使用Amazon Alexa轻松设置智能家居设备
- 基于UWB的室内SDS_TWR测距算法优化和定位算法融合的研究
- Windows日志浅析
- TA 认识 unity shader最基本的代码结构与书写01
- 工程机械远程监控系统
- 漂亮妹妹~~~~~~`