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或者二进制进行观察。

最新文章

  1. linux(六)__进程与任务控制
  2. Android UI 绘制过程浅析(五)自定义View
  3. StringBuilder和StringBuffer区别
  4. Redis下载及安装部署
  5. 集合框架学习笔记&lt;二&gt;
  6. Beyond Compare
  7. ci中简单实用的权限管理
  8. 通过从代码层面分析Linux内核启动来探知操作系统的启动过程
  9. php 对象的执行
  10. Host绑定
  11. PDO操作mysql数据库(二)
  12. Debian ls 文件 文件夹颜色显示
  13. IBM Minus One(water)
  14. sql server 2005中没有等于等于,高手自行跳过。。
  15. 记NOIP分数出来前
  16. spring boot maven 插件
  17. 爬取拉勾网招聘信息并使用xlwt存入Excel
  18. Xcode工程编译错误之iOS开发之Xcode9报错 Compiling IB documents for earlier than iOS7 is no longer supported.
  19. Kafka 笔记1
  20. python记录_day12 生成器

热门文章

  1. eclipse中不能找到dubbo.xsd解决方法
  2. Conclusion
  3. C#开发-ftp操作方法整理
  4. Android(java)学习笔记128:使用proguard混淆android代码
  5. cell函数总结
  6. webbroswer 后台注入脚本 的方法
  7. JDBC入门连接MySQL查数据
  8. Android之Http网络编程(二)
  9. effective c++(05)(06)之c++默默编写并调用的函数
  10. 禁止button响应回车(.net页面)