C语言小结之结构类型
C语言小结之结构类型
@刁钻的游戏
(1)枚举型类型
enum COLOR {BLACK,RED,BLUE};
//声明一种新的数据类型,其值分别为0,1,2但是用BLACK/RED/BLUE代表
也可以这莫做
enum COLOR {RED = 1,YELLO,BLUE};//则值为1,2,3
enum的本质还是int型
应用:可以表示一列const int,用它来做符号量。
(2)结构类型
结构体类型就是一个复合数据类型,就是一个变量,下面包含着一些数据。
1>结构体声明
方式一:声明结构体
struct point{//创建结构体类型
int x;
int y;
}
struct point P1;//声明point类型变量 P1
方式二:单纯想要两个变量,而不想声明这种结构类型
struct{
int x;
int y;
}p1,p2;
方式三:同时做两件事,一则创建结构体变脸类型,二则声明两个结构体变量
struct point{
int x;
int y;
}p1,p2;
2>结构体变量赋值
struct point p1 = {12,32};
struct point p2 = {,y=10};//为赋值的默认为0
注意:前面要跟上struct
3>结构成员的访问和使用
使用.域操作符
p1.x = 2;
z = p1.y;
可以对整体赋值,譬如:P1 = (struct point){4,5};
4>函数中传递的是值不是地址,如果我们想改变本身变量,应该传入地址
&p1
p1->x表示P1中的成员变量x
思想:函数中,传入一个结构体,不如只穿结构体的指针,然后在函数体里面进行使用
5>结构数组
point P1[2] = {{1,2},{2,3}};//两个坐标P1[0] = {1,2} P2[1]={2,3}
print(point *p1)
{
printf("x=%d,y=%d",p1->x,p1->y);
}
(3)自定义数据类型
struct创建的自定义数据类型,在声明变量时都要跟上struct
typedef提供了数据类型别名
例如
typedef int LENGTH//表示为int起了个别名叫做LENGTH
则以后可以这样使用
LENGH l1,l2;
所以我们可以用它来这样做
typedef struct APOINT{
int x;
int y;
} POINT;
他就等效为如下图所示
typedef <---> POINT//表示为struct 结构体类型创造了POINT变量类型
以后就可以这样
POINT P1 ={1,2};
(4)联合体数据类型
表示形式:union
举例:
union POINT{
char i;
int y;
}
共用体声明后,实质这块内存的大小是其中包含变量最大的大小,在上述程序中应该是int大小最大,那么他是四个字节大小
内存中排列是这样的
i 【 】 ---- ---- ----
y 【 】【 】【 】【 】
//【】代表内存占有 ---- 内存不占有
他们共用一块内存。
应用:可以利用共用体对长变量进行拆分,拆分成四个char或者二进制进行观察。
C语言小结之结构类型的更多相关文章
- [C语言]进阶|结构类型: 枚举, 结构, 类型定义
--------------------------------------------------------------------- 枚举: // main.c #include <std ...
- 《Go语言实战》Go 类型:基本类型、引用类型、结构类型、自定义类型
Go 语言是一种静态类型的编程语言,所以在编译器进行编译的时候,就要知道每个值的类型,这样编译器就知道要为这个值分配多少内存,并且知道这段分配的内存表示什么. 提前知道值的类型的好处有很多,比如编译器 ...
- C语言入门-结构类型
一.声明结构类型 #include <stdio.h> int main(int argc, char const *argv[]) { // 声明结构类型 struct date { i ...
- GO语言基础(结构+语法+类型+变量)
GO语言基础(结构+语法+类型+变量) Go语言结构 Go语言语法 Go语言类型 Go语言变量 Go 语言结构 Go 语言的基础组成有以下几个部分: 包声明 引入包 函数 变量 语句 &a ...
- GO语言总结(2)——基本类型
上篇博文总结了Go语言的基础知识——GO语言总结(1)——基本知识 ,本篇博文介绍Go语言的基本类型. 一.整型 go语言有13种整形,其中有2种只是名字不同,实质是一样的,所以,实质上go语言有1 ...
- C语言 栈 顺序结构 实现
一个能够自动扩容的顺序结构的栈 ArrStack 实例 (GCC编译). /** * @brief C语言实现的顺序结构类型的栈 * @author wid * @date 2013-10-29 * ...
- Scala 深入浅出实战经典 第53讲:Scala中结构类型实战详解
王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-64讲)完整视频.PPT.代码下载:百度云盘:http://pan.baidu.com/s/1c0noOt6 ...
- [Effective JavaScript 笔记]第57条:使用结构类型设计灵活的接口
想象创建wiki的库.wiki网站包含用户可以交互式地创建.删除和修改的内容.许多wiki都以简单.基于文本标记语言创建内容为特色.通常,这些标记语言只提供了HTML可用功能的一个子集,但是却有一个更 ...
- C语言中的结构体,结构体数组
C语言中的结构体是一个小难点,下面我们详细来讲一下:至于什么是结构体,结构体为什么会产生,我就不说了,原因很简单,但是要注意到是结构体也是连续存储的,但要注意的是结构体里面类型各异,所以必然会产生内存 ...
随机推荐
- C++ (P160—)多继承 二义性 虚基类 “向上转型”
1 多继承中,必须给每个基类指定一种派生类型,如果缺省,相应的基类则取私有派生类型,而不是和前一个基类取相同的派生类型 2 一个类的保护成员只能被本类的成员函数或者它的派生类成员函数访问 3 由于c+ ...
- Java设计模式之策略模式(一)
今年寒假没有回家,打算利用这个假期的时间进行学习设计模式,这一个人感觉比较牛的知识,前一段时间一直在忙着搞自己的专业课,还有就是捣鼓了一下Linux系统,没有好好的学习关于Java还有Android方 ...
- 例3-12opencv设置ROI感兴趣区域
前面说了一堆,也不知道啥用,感觉也没说清楚,可能确实需要一些例子来显性表示一下,或者他们在当初出版书籍针对的人群已经有了对图像的基本认识,然而自己还是没有建立起来,往后看看吧,希望能比较清楚的自己处理 ...
- Azure PowerShell 创建虚拟机
# 指定订阅名称$subscriptionName="订阅名称"# 指定云服务名称$serviceName="云服务名称"# 指定用来保存虚拟机VHD的存储$s ...
- Pester: Unit Testing for PowerShell
Pester is a BDD inspired testing framework for PowerShell just like Jasmine is on the JavaScript sid ...
- Python 基础【第八篇】变量
1.变量定义: 给数据进行命名,数据的名字就叫做变量 2.变量格式: [变量名] = [值] 注:变量名命名需要满足下面两条准则 准则一:标示符开头不能为数字.不能包含空格.特殊字符准则二:标示符不能 ...
- 关于Git的工作区域和对应的文件状态.
Git是一个免费的.分布式的版本控制工具,或是一个强调了速度快的源代码管理工具.每一个Git的工作目录都是一个完全独立的代码库,并拥有完整的历史记录和版本追踪能力,不依赖于网络和中心服务器. Git ...
- nodejs 微信中使用file组件上传图片在某些机型上点击无反应
看下下面的代码: <form action="/" class="file_upload" method="post" enctype ...
- MySQL备份方案
下面将分别模拟不同场景数据库宕机解决方案:这里应用到的技术分别为innobackuper及binlog日志来进入还原数据 一.主从库情况下(为了不影响主库的性能,备份都放在从库上进行)当主库宕机时,如 ...
- 第三篇、CSS样式简介
<!--1.行内样式 <p style="background-color:red;font-size:20px"> --> <!--2.页内样式 & ...