重拾C语言——结构体和共用体
结构体:不同类型变量的集合
数组:相同类型变量的集合
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语言——结构体和共用体相关推荐
- C语言回炉重造(枚举,指针,结构体,共用体,位域)
枚举 enum 概念为,当有一系列变量需要规则性赋值是,可以使用enum作为一个特殊的数据类型. 例如:需要给7个不同的变量分别赋值1到7(mon,tue,wed,thu,fri,sat,sun) 在 ...
- C语言之结构体和共用体
C语言之结构体和共用体 算上这篇笔记加上之前的四篇笔记,C语言基础我们也就告一段落了,对于刚刚接触c语言的童鞋们来说,这些以及足够了,稍后我会发布数据结构,对于想要深入学习的童鞋可以继续关注.本人也算 ...
- 【C语言】结构体、共用体、位域
结构体 1. 结构体的声明方法 struct struct_name {data_type member1;data_type member2;.. }; 这是其中一种声明方式~ 2.定义一个结构体变 ...
- C语言入门系列之10.结构体和共用体
文章目录 一.结构体变量的基本使用 1.概述 2.定义结构体类型变量的方法 3.结构体变量的引用 4.结构体变量的初始化 二.结构体的高级应用 1.结构体数组 Ⅰ定义结构体数组 Ⅱ结构体数组的初始化 ...
- C语言结构体与共用体03
小甲鱼结构体与共用体03 实战例题:有一个结构体变量stu,内含学生学号.姓名和3门课程的成绩.通过调用函数print将它们输出. ①先用结构体变量作函数参数: //先用结构体变量作函数参数 #inc ...
- C语言-结构体与共用体
int 4字节:char 1字节:short 2字节:float 4字节: 1字节bytes=8位bits(2^8): struct date {int month;int day;int year; ...
- 江哥带你玩转C语言 | 14 - 结构体-枚举-共用体
什么是结构体 结构体和数组一样属于构造类型 数组是用于保存一组相同类型数据的, 而结构体是用于保存一组不同类型数组的 例如,在学生登记表中,姓名应为字符型;学号可为整型或字符型;年龄应为整型;性别应为 ...
- 结构体与共用体05 - 零基础入门学习C语言57
第十章:结构体与共用体05 让编程改变世界 Change the world by program 对链表结点的删除操作实现 实现源代码: [codesyntax lang="c" ...
- 结构体与共用体07 - 零基础入门学习C语言59
第十章:结构体与共用体07 让编程改变世界 Change the world by program 用typedef定义类型 用typedef声明新的类型名来代替已有的类型名 声明INTEGER为 ...
最新文章
- 高并发系统搭建:web负载均衡
- brain.js 时间序列_免费的Brain JS课程学习JavaScript中的神经网络
- skyline三维模型规格
- html的分类与特点
- java.library.path hadoop_关于java:Hadoop“无法为您的平台加载本机Hadoop库”警告
- SWFKit 3.5 + 注册机
- 干货!Java字节码增强探秘
- 安卓使用jdbc连接mysql_Android:使用JDBC连接MySql
- java添加容器_如何为Java应用程序构建docker容器
- python网站后台_Python 网站后台扫描脚本
- linux中proc文件系统 -- ldd3读书笔记
- 从声学模型算法角度总结 2016 年语音识别的重大进步
- instead of触发器实现复杂视图dml和应用逻辑
- js Promise理解,同时请求多个接口等
- Spark SQL面试题
- SDCC编译器学习旅之一
- java中指数形式的格式_java – 复数的指数形式
- 关于 移动 电信 联通 运营商数据抓取 通话记录 京东淘宝学信网数据抓取 失信报告,网贷黑名单,央行征信报告数据抓取
- Javascript-循环
- 不忘初心 牢记使命 拉卡拉支付积极履行社会责任