linux高级编程五结构体
来源:互联网 发布:php广告任务网源码 编辑:程序博客网 时间:2024/05/22 04:23
===================== 结构体 =================
1. 结构体是构造的一种数据类型,结构体当中可以通过定义不同数据类型的成员变量保存不同含义的信息
2.结构体的定义:
1.有名结构体的定义
struct 结构体名称
{
数据类型 成员变量1;
数据类型 成员变量2;
... //结构体当中没有规定成员个数的上限值
};
2.无名结构体的定义
struct
{
数据类型 成员变量1;
数据类型 成员变量2;
...
}变量名;
3.嵌套结构体定义
struct student
{
int num;
char name[10];
struct student *a;
};
struct student
{
int num;
struct
{
int a;
int b;
}c;
};
3.结构体的初始化:
2.1全部初始化
struct student
{
int num;
char name[10];
char sex;
}stu = {123,"wang",'m'};
struct student
{
int num;
char name[10];
char sex;
};
struct student stu = {123,"wang",'m'};
2.2局部初始化
struct student stu1 = {
.num = 12,
.name = "wang"
};
2.3typedef用法
将一个数据类型起一个别名
4.结构体的引用
1.结构体的直接引用==> '.'
stu.name;
stu.num;
2.结构体的间接引用==> '->'
必须通过指针访问
struct student *pstu;
struct student stu;
pstu = &stu;
pstu->num;
pstu->name;
pstu->sex;
====================== 内存对齐 ====================
1.字节:cpu能够一次性处理的最大单位 1个字 = 4个字节
内存对齐有三种:
1.字节对齐
2.半字对齐 2个字节对齐 short
3.字对齐 4个字节对齐
内存对齐规则:
1.成员存放的地址必须是自身基本类型长度的整数倍
2.结构体总大小等于成员中最大的基本数据类型的整数倍
16字节
struct
{
char a;
int b;
}c;
======================== 共用体 ====================
1.一般形式
union body
{
int a;
char b;
long c;
char name[32];
};
union body e;
2.共用体的特点:
1.共用体的大小取决于成员变量当中所占字节空间最大的那一个
2.共用体当中保存的数据,是上次赋值的成员变量的值
3.union、struct的区别
struct类型中每个成员独自占用各自空间
union类型中每个成员共占内存空间
练习:数据存储的大端小端问题。
低内存地址存放低数据位称为小端
低内存地址存放高数据位称为大端
有一个unsigned int整数,分别将其前两个字节和后两个字节相加,输出结果
uinon add
{
unsigned int a;
struct
{
unsigned short b;
unsigned short c;
}e;
};
从终端获得3名学生的数据(封装成一个函数)
name:num:score
然后在中断上打印3名学生的数据(封装成另外的一个函数)
struct student
{
int num;
char name[10];
char sex;
};
struct student a;
struct student b;
struct
{
int num;
char name[10];
char sex;
}a;
struct
{
int num;
char name[10];
char sex;
}b;
1. 结构体是构造的一种数据类型,结构体当中可以通过定义不同数据类型的成员变量保存不同含义的信息
2.结构体的定义:
1.有名结构体的定义
struct 结构体名称
{
数据类型 成员变量1;
数据类型 成员变量2;
... //结构体当中没有规定成员个数的上限值
};
2.无名结构体的定义
struct
{
数据类型 成员变量1;
数据类型 成员变量2;
...
}变量名;
3.嵌套结构体定义
struct student
{
int num;
char name[10];
struct student *a;
};
struct student
{
int num;
struct
{
int a;
int b;
}c;
};
3.结构体的初始化:
2.1全部初始化
struct student
{
int num;
char name[10];
char sex;
}stu = {123,"wang",'m'};
struct student
{
int num;
char name[10];
char sex;
};
struct student stu = {123,"wang",'m'};
2.2局部初始化
struct student stu1 = {
.num = 12,
.name = "wang"
};
2.3typedef用法
将一个数据类型起一个别名
4.结构体的引用
1.结构体的直接引用==> '.'
stu.name;
stu.num;
2.结构体的间接引用==> '->'
必须通过指针访问
struct student *pstu;
struct student stu;
pstu = &stu;
pstu->num;
pstu->name;
pstu->sex;
====================== 内存对齐 ====================
1.字节:cpu能够一次性处理的最大单位 1个字 = 4个字节
内存对齐有三种:
1.字节对齐
2.半字对齐 2个字节对齐 short
3.字对齐 4个字节对齐
内存对齐规则:
1.成员存放的地址必须是自身基本类型长度的整数倍
2.结构体总大小等于成员中最大的基本数据类型的整数倍
16字节
struct
{
char a;
int b;
}c;
======================== 共用体 ====================
1.一般形式
union body
{
int a;
char b;
long c;
char name[32];
};
union body e;
2.共用体的特点:
1.共用体的大小取决于成员变量当中所占字节空间最大的那一个
2.共用体当中保存的数据,是上次赋值的成员变量的值
3.union、struct的区别
struct类型中每个成员独自占用各自空间
union类型中每个成员共占内存空间
练习:数据存储的大端小端问题。
低内存地址存放低数据位称为小端
低内存地址存放高数据位称为大端
有一个unsigned int整数,分别将其前两个字节和后两个字节相加,输出结果
uinon add
{
unsigned int a;
struct
{
unsigned short b;
unsigned short c;
}e;
};
从终端获得3名学生的数据(封装成一个函数)
name:num:score
然后在中断上打印3名学生的数据(封装成另外的一个函数)
struct student
{
int num;
char name[10];
char sex;
};
struct student a;
struct student b;
struct
{
int num;
char name[10];
char sex;
}a;
struct
{
int num;
char name[10];
char sex;
}b;
0 0
- linux高级编程五结构体
- UNIX_C 高级编程<五>
- C# 高级编程 - .NET结构
- 五、Linux——结构体
- Linux Shell高级技巧(五)
- Linux Shell高级技巧(五)
- Linux Shell高级技巧(五)
- Linux Shell高级技巧五
- Linux学习高级篇(五)
- Linux学习高级篇(五)
- Linux Shell高级技巧(五)
- linux高级编程
- linux高级编程 函数
- linux 高级编程
- linux 高级编程
- Linux 高级编程
- Linux 高级Socket编程
- Linux 高级Socket编程
- Scala基础语法
- Python关于实现包和创建包
- java初始化List集合
- 出现The 'microsoft.jet.oledb.4.0' provider is not registered on the local machin 问题解决方案
- typedef struct 用法
- linux高级编程五结构体
- React Native调试技巧与心得
- zzuli 1895
- 1894: 985的方格难题
- FastReport在线报表设计器:页面结构简介
- 凸包问题
- linux高级编程六Makefile
- 探究c++对象模型之写在前面
- 学密码学一定得学程序