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语言中的结构体是一个小难点,下面我们详细来讲一下:至于什么是结构体,结构体为什么会产生,我就不说了,原因很简单,但是要注意到是结构体也是连续存储的,但要注意的是结构体里面类型各异,所以必然会产生内存 ...
随机推荐
- iOS 图片加载框架- SDWebImage 解读
在iOS的图片加载框架中,SDWebImage可谓是占据大半壁江山.它支持从网络中下载且缓存图片,并设置图片到对应的UIImageView控件或者UIButton控件.在项目中使用SDWebImage ...
- Android界面刷新
Android的invalidate与postInvalidate都是用来刷新界面的,用法区别在于: 1)invalidate():实例化一个Handler对象,并重写handleMessage方法调 ...
- We~ˇsay~~ˇ
拂弹每一个音符 与心相印 行走每一段风景 和路缠绵 花开的声音 只能用心倾听 无论曾经如何艰难 我依然在最初的起点 默念歌唱 等你 携手
- Redis主备自动切换
Sentinel(哨兵)是用于监控redis集群中Master状态的工具. 一.Sentinel作用 1.Master状态检测 2.如果Master异常,则会进行Master-Slave切换,将 ...
- js数组求和
array1.reduce(callbackfn[, initialValue]) callback : 函数执行在数组中每个值 initialValue : 对象作为第一个参数回调的第一次调用使用 ...
- 简单的ROT13码编码与解码
ROT13码意思是将字母左移13位.如'A' ↔ 'N', 'B' ↔ 'O','V' ↔ 'I'. 下面实现ROT13码的解码. function rot13(str) { var arr = [] ...
- php入门实现留言板
首先由一个文本文档read.txt liulan.html <!doctype html> <html lang="en"> <head> &l ...
- Java多线程并发
http://wangjianwei866.blog.163.com/blog/static/9295823201231665319314/ 基于以上网文,调整了一下格式,修改了一些标点和拼写错误. ...
- 【MINA】用mina做业务服之间的通信,实现业务负载均衡思路
学习mina目的还是搭建通信架构,学完mina我们了解了如何实现客户端和服务端,也就是一个正常channel我们是知道怎么建立的 但是问题是,我们应用环境通信分为两种 1.前后端通信 其实这个比较好实 ...
- RabbitMQ 原文译04--路由
在前一篇文章中我们构建了一个简单的日志系统,我们可以向多个接受者广播消息. 在这篇文章我,我们将要添加一些功能使得针对部分消息的接受成为可能,例如我们只对错误的消息进行磁盘记录,同时又可以把所有的消息 ...