结构体:不同类型变量的集合
数组:相同类型变量的集合

struct长度=最后一个成员大小+最后一个成员偏移量+填充值;

结构体中的成员的偏移量需是自身长度的整数倍(不够就填充);

结构体总长度必须是占内存最大的成员的长度的整数倍。

三种方式定义结构体:
1.struct weapon{
char name[20];
int atk;
int price;
};

struct weapon weapon_1;

2.1.struct weapon{
char name[20];
int atk;
int price;
}weapon_1;

3.struct {
char name[20];
int atk;
int price;
}weapon_1;

第三种定义方式无法再定义下一个结构体变量了。

结构体初始化:
struct weapon weapon_1={" xxx",xxxx,xx.....};对应的
引用使用.运算符
定义 struct weapon weapon_2[2]={{"m16",50,100},{"m4a1",100,200}};
引用 weapon_2[0].name
结构体数组初始化 struct xxx xx[2] = {{xx, xx, ...}, {yy, yy, ...}};

示例代码:
#include <stdio.h>
struct weapon{
 char name[20];
 int atk;
 int price;
};

int main(){
 int a=0;
 float b=0.9;
 
 struct weapon weapon_1={{"weapon_name",100.200};
printf("%s\n,%d\n",weapon_1.name,++weapon_1.price);

struct weapon *w;
w=&weapon_1;
printf("name=%s\n,name=%s\n",(*w).name,w->name);//w->name weapon_1.name

struct weapon weapon_2[2]={{"weapon_name",50.200},{"weapon_name2",100,200}};
printf("%s\n,%d\n",weapon_2[0].name,weapon_2[1].atk);

struct weapon *p;
p=weapon_2;
printf("%s\n",p->name);//p->name weapon_2[0].name
p++;//weapon_2+1 weapon_2[1]

return 0;

}

共用体:作用使几个不同类型的变量共享同一个内存地址
        所占用的内存空间是成员中最长的一个成员字节数
union data{
 int a ;
 char b;
 int c;
};
int main(){
 union data data_1;
 data_1.b='c';
 data_1.a=10;//则只有最后一个赋值有效

return 0;

}

重拾C语言——结构体和共用体相关推荐

  1. C语言回炉重造(枚举,指针,结构体,共用体,位域)

    枚举 enum 概念为,当有一系列变量需要规则性赋值是,可以使用enum作为一个特殊的数据类型. 例如:需要给7个不同的变量分别赋值1到7(mon,tue,wed,thu,fri,sat,sun) 在 ...

  2. C语言之结构体和共用体

    C语言之结构体和共用体 算上这篇笔记加上之前的四篇笔记,C语言基础我们也就告一段落了,对于刚刚接触c语言的童鞋们来说,这些以及足够了,稍后我会发布数据结构,对于想要深入学习的童鞋可以继续关注.本人也算 ...

  3. 【C语言】结构体、共用体、位域

    结构体 1. 结构体的声明方法 struct struct_name {data_type member1;data_type member2;.. }; 这是其中一种声明方式~ 2.定义一个结构体变 ...

  4. C语言入门系列之10.结构体和共用体

    文章目录 一.结构体变量的基本使用 1.概述 2.定义结构体类型变量的方法 3.结构体变量的引用 4.结构体变量的初始化 二.结构体的高级应用 1.结构体数组 Ⅰ定义结构体数组 Ⅱ结构体数组的初始化 ...

  5. C语言结构体与共用体03

    小甲鱼结构体与共用体03 实战例题:有一个结构体变量stu,内含学生学号.姓名和3门课程的成绩.通过调用函数print将它们输出. ①先用结构体变量作函数参数: //先用结构体变量作函数参数 #inc ...

  6. C语言-结构体与共用体

    int 4字节:char 1字节:short 2字节:float 4字节: 1字节bytes=8位bits(2^8): struct date {int month;int day;int year; ...

  7. 江哥带你玩转C语言 | 14 - 结构体-枚举-共用体

    什么是结构体 结构体和数组一样属于构造类型 数组是用于保存一组相同类型数据的, 而结构体是用于保存一组不同类型数组的 例如,在学生登记表中,姓名应为字符型;学号可为整型或字符型;年龄应为整型;性别应为 ...

  8. 结构体与共用体05 - 零基础入门学习C语言57

    第十章:结构体与共用体05 让编程改变世界 Change the world by program 对链表结点的删除操作实现 实现源代码: [codesyntax lang="c" ...

  9. 结构体与共用体07 - 零基础入门学习C语言59

    第十章:结构体与共用体07 让编程改变世界 Change the world by program 用typedef定义类型 用typedef声明新的类型名来代替已有的类型名   声明INTEGER为 ...

最新文章

  1. 高并发系统搭建:web负载均衡
  2. brain.js 时间序列_免费的Brain JS课程学习JavaScript中的神经网络
  3. skyline三维模型规格
  4. html的分类与特点
  5. java.library.path hadoop_关于java:Hadoop“无法为您的平台加载本机Hadoop库”警告
  6. SWFKit 3.5 + 注册机
  7. 干货!Java字节码增强探秘
  8. 安卓使用jdbc连接mysql_Android:使用JDBC连接MySql
  9. java添加容器_如何为Java应用程序构建docker容器
  10. python网站后台_Python 网站后台扫描脚本
  11. linux中proc文件系统 -- ldd3读书笔记
  12. 从声学模型算法角度总结 2016 年语音识别的重大进步
  13. instead of触发器实现复杂视图dml和应用逻辑
  14. js Promise理解,同时请求多个接口等
  15. Spark SQL面试题
  16. SDCC编译器学习旅之一
  17. java中指数形式的格式_java – 复数的指数形式
  18. 关于 移动 电信 联通 运营商数据抓取 通话记录 京东淘宝学信网数据抓取 失信报告,网贷黑名单,央行征信报告数据抓取
  19. Javascript-循环
  20. 不忘初心 牢记使命 拉卡拉支付积极履行社会责任

热门文章

  1. ios ipad里面调用系统相册图片不完整解决方法
  2. 【绘画素材】Q版线稿参考,欢迎临摹嗷
  3. 计算机应用基础教程ppt 洪歧,计算机应用基础案例教程(清华)
  4. 电脑屏幕黑屏的终极解决办法
  5. 监控系统与服务器的连接,监控服务器的连接方法
  6. Android屏幕图片资源大小
  7. 电脑端压缩工具哪个好用
  8. [WHS] Windows Home Server 官方中文站点上线
  9. Kaggle比赛—预测 DNA、RNA 和蛋白质测量如何在单细胞中共同变化
  10. 这些用例设计题,你在面试时遇到过吗?