C温故补缺(八):结构体与共用体
结构体与共用体
结构体
是一个可以存储多个不同类型的变量的结构,类似于面对对象中的类(只有成员变量的类).
struct tag {
member-list
member-list
member-list
...
} variable-list ;
tag 是结构体标签。
member-list 是标准的变量定义,比如 int i; 或者 float f,或者其他有效的变量定义。
variable-list 结构变量,定义在结构的末尾,最后一个分号之前,可以指定一个或多个结构变量
一般可以省略tag或variable-list
struct
{
int a;
char b;
double c;
} s1;
但是这样只能在声明结构时定义变量,之后就不能再定义变量了
struct SIMPLE
{
int a;
char b;
double c;
};
这样才是结构体的最一般的形式,之后再定义结构体变量用struct SIMPLE s2
这两个结构体虽然成员变量相同,但他们的变量不是相同的类型,是不能直接做赋值运算的
结构体和typedef
typedef是用来给数据类型重命名的,但是当和结构体共用时容易混淆
①直接连用
typedef struct simple{
int a;
int b;
};
struct simple s1;
这样没什么用
②取别名
typedef struct simple{
int a;
int b;
}Smp;
Smp s1;
这样重命名,就可以直接用第二个名字Smp定义变量,而不需加struct
③省略tag
typedef struct{
int a;
int b;
}Smp;
Smp s1;
④对已经声明完的结构体重命名
struct simple{
int a;
int b;
}s1;
typedef struct simple Smp;
⑤也可以定义结构体指针别名
typedef struct simple{
int a;
int b;
}*sp;
等价于:typedef struct simple *sp;
调用:
sp s1=malloc(sizeof(struct simple));
s1->a=0;
⑥同时定义结构体别名和结构体指针别名(常用,且经常省略tag)
typedef struct{
int a;
int b;
}simple,*Spoint;
Spoint s1=malloc(sizeof(simple));
s1->i=3;
这样就可以用simple定义结构体变量,同Spoint定义结构体变量指针
共用体
只是结构上和结构体相似,但共用体更接近于一个变量,这个变量的类型可以是多种的.但是它不能同时有多个类型
如:
union Data{
int i;
long f;
char c[20];
}
用Data定义的变量可以是int,long或char []型的,它的内存空间按最大的变量算
union的作用就是允许同一段内存空间存储不同的数据类型,这就是"共用"的实质
C温故补缺(八):结构体与共用体的更多相关文章
- 不可或缺 Windows Native (8) - C 语言: 结构体,共用体,枚举,类型定义符
[源码下载] 不可或缺 Windows Native (8) - C 语言: 结构体,共用体,枚举,类型定义符 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 结构体 ...
- C++程序设计之结构体,共用体,枚举和typedef
[1]结构体的基本功 注意结构体里面可以有很多东西,可以结构体里面包含结构体 #include<iostream> using namespace std; struct Date { i ...
- 全国计算机等级考试二级教程-C语言程序设计_第14章_结构体、共用体和用户定义类型
函数的返回值是结构体类型 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> struct ...
- __c语言__结构体、共用体、枚举__笔记
2017-09-16 21:14:09 结构体,共用体,枚举 1.结构体 把不同的类型整合成一个有机的整体,以便于引用,这个类型就叫做结构体 1)结构体变量的定义方式(3种)和引用成员变量: 定义一个 ...
- C++面试常见问题——13结构体与共用体的sizeof
结构体与共用体的sizeof 结构体的sizeof 结构体变量占用的内存空间大小通常是其基本类型的大小,但是由例外(字节对齐机制) struct S1{ char c[5]; int a; doubl ...
- C语言程序设计(十二) 结构体和共用体
第十二章 结构体和共用体 当需要表示复杂对象时,仅使用几个基本数据类型显然是不够的 根本的解决方法是允许用户自定义数据类型 构造数据类型(复合数据类型)允许用户根据实际需要利用已有的基本数据类型来构造 ...
- C语言------结构体和共用体
仅供借鉴.仅供借鉴.仅供借鉴(整理了一下大一C语言每个章节的练习题.没得题目.只有程序了) 文章目录 1 .实训名称 2 .实训目的及要求 3.源代码及运行截图 4 .小结 1 .实训名称 实训8:结 ...
- C语言:结构体,共用体
结构体: 一个变量,存储不同类型的数据项共用体:一个变量,存储不同类型的数据项,相同的内存位置,存储不同的数据类型 #include <stdio.h> #include <stri ...
- c的详细学习(10)结构体与共用体的学习(二)
在c语言中,结构体数据类型与共用体数据类型都属于构造类型.共用体与结构体数据类型在定义上十分相似,但它们在存储空间的占用分配上有本质的区别.结构体变量是各种类型数据的集合,各成员占据不同的存储空间,而 ...
- c的详细学习(9)结构体与共用体的学习(一)
C语言提供了另外两种构造类型:结构体与公用体,用来存储若干个类型不同但彼此组成一个集合的数据总体. (1)结构体类型与结构体变量 1.定义 其一般形式为: struct 结构体类型名{ 数据类型1 ...
随机推荐
- 如何结合整洁架构和MVP模式提升前端开发体验(三) - 项目工程化配置、规范篇
工程化配置 还是开发体验的问题,跟开发体验有关的项目配置无非就是使用 eslint.prettier.stylelint 统一代码风格. formatting and lint eslint.pret ...
- Exchange如何将邮件转发给外部邮件地址
Exchange如何将邮件转发给外部邮件地址 最近遇到一个需求.一位已经离职的员工需要将后续的邮件转发给他自己的私人邮箱.安全,行政的审核通过后,这个问题就到了技术部门了. Exchange可以很方便 ...
- Cat Theme
将博客皮肤设置为: SimpleMemory 插入CSS代码 #EntryTag{margin-top:20px;font-size:9pt;color:gray}.topicListFooter{t ...
- 当 EDA 遇到 Serverless,亚马逊云科技出招了
近二三十年来,软件开发领域毫无疑问是发展最为迅速的行业之一. 在上个世纪九十年代,世界上市值最高的公司大多是资源类或者重工业类的公司,例如埃克森美孚或者通用汽车,而现在市值最高的公司中,纯粹的软件公司 ...
- MinIO Server配置指南
MinIO server在默认情况下会将所有配置信息存到 ${HOME}/.minio/config.json 文件中. 以下部分提供每个字段的详细说明以及如何自定义它们. 配置目录 默认的配置目录是 ...
- Traefik 2.0 暴露 Redis(TCP) 服务
文章转载自:https://mp.weixin.qq.com/s?__biz=MzU4MjQ0MTU4Ng==&mid=2247484452&idx=1&sn=0a17b907 ...
- 使用nginx-ingress-controller配置https,但是再同时配置使用http
默认情况下,如果为该 Ingress 启用了 TLS,控制器会使用 308 永久重定向响应将 HTTP 客户端重定向到 HTTPS 端口 443.( Ingress 里配置了 https 证书的话,默 ...
- OFD是什么
OFD是什么? 原文链接:OFD是什么 OFD更多了解:OFD (Open Fixed layout Document/开放版式文档) OFD格式文件介绍 OFD(Open Fixed layout ...
- uoj131【NOI2015】品酒大会
题目链接 很容易想到p和q"r相似"就等价于在后缀数组中q与p之间的height值\(\ge r\),也就是说\(<r\)的那些height值会把排好序后的后缀分割成若干段, ...
- Linux实战笔记_CentOS7_无法识别NTFS格式的U盘
注:因为CentOS 默认不识别NTFS的磁盘格式,所以我们要借助另外一个软件ntfs-3g来挂载.自带的yum源没有这个软件,要用第三方的软件源,比如阿里的epel. #安装ntfs-3g cd / ...