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语言中的结构体是一个小难点,下面我们详细来讲一下:至于什么是结构体,结构体为什么会产生,我就不说了,原因很简单,但是要注意到是结构体也是连续存储的,但要注意的是结构体里面类型各异,所以必然会产生内存 ...
随机推荐
- spring源码分析之spring-web http详解
spring-web是spring webmvc的基础,它的功能如下: 1. 封装http协议中client端/server端的request请求和response响应及格式的转换,如json,rss ...
- Database API
Database API Introduction Basic Usage Selects Joins Aggregates Raw Expressions Inserts Updates Delet ...
- Linux与windows文件乱码问题
Linux与windows文件乱码问题 */--> Linux与windows文件乱码问题 Table of Contents 1. 简介 2. iconv详解 2.1. iconv –help ...
- Java双向链表实现
public class DoublyLinkList { private class Data{ private Object obj; private Data left = null; priv ...
- WordPress 后台提示输入FTP信息
Wordpress 安裝主題時,需要輸入ftp訊息 參考了:WordPress后台更新提示输入FTP信息 ,解決方法是: 方法一.通過ssh 對wordpress 項目的文件夾賦權限 sudo cho ...
- ASP连接MYSQL数据库
<% strconnection="driver={mysql odbc 3.51 driver};database=weste_net;server=localhost;uid=ro ...
- 自己动手写一个简单的(IIS)小型服务器
因为第一次在博客园发表随笔,不太会用,这个笔记是我之前在印象笔记中写好的,然后直接copy过来,有兴趣自己做一个IIS服务器的小伙伴们可以参照下面的流程做一次,也可以叫我要源代码,不过要做完,我觉得花 ...
- net下 Mysql Linq的使用, 更新数据,增加数据,删除数据
net下访问mysql主要有2种方法: 1.字符串拼接访问 a.mysql官网下载并安装mysql-connector-net. b项目中引用mysql.data等 所有增删改查可以通过拼接sql语句 ...
- Centos7安装并配置mysql5.6完美教程
Centos7安装并配置mysql5.6完美教程 Centos7将默认数据库mysql替换成了Mariadb,对于我们这些还想使用mysql的开发人员来说并不是一个好消息.然而,网上关于Linux安装 ...
- seaJs 使用
开始使用seajs的时候折磨了我好一阵.光是各种概念就让新手难理解.现在弄清楚了,上个实践以备忘.目录结构如图. 1.文件 sea.html main.js a.js b.js c.js 最 ...