(九)结构体共用体
来源:互联网 发布:看书的软件推荐 编辑:程序博客网 时间:2024/06/06 14:23
1、大小端
大端存储:低字节数据存放在高地址,高字节数据存放在低地址
小端存储:低字节数据存放在低地址,高字节数据存放在高地址
大端存储:低字节数据存放在高地址,高字节数据存放在低地址
小端存储:低字节数据存放在低地址,高字节数据存放在高地址
#include<stdio.h>int main(){int a = 0x12345678;char *p = NULL;p = &a;printf("*p=%#x,p=%p\n",*p,p);return 0;}
2、结构体
可以描述一个事物的详细信息,结构是用户自定义的类型,比数组更灵活,同一个结构可以存储多种类型的数据。
结构的创建包括两步,首先定义结构描述---描述并标记了能够存储在结构中的各种数据类型。
struct 结构体名 {
数据类型 变量名 1;
数据类型 变量名 2;
……
};
struct 结构体名 {
数据类型 变量名 1;
数据类型 变量名 2;
……
}变量名;
struct {
数据类型 变量名 1;
数据类型 变量名 2;
……
}变量名;
#include<stdio.h>struct student{int num;char *name;char gender;float score;}zs,ls={999,"lisi",'F',89.7};int main(){//struct student zs;struct student *p;p = &zs;zs.num = 1000;zs.name = "zhangsan";zs.gender = 'M';zs.score = 98.8;printf("%d,%s,%c,%f\n",p->num,p->name,(*p).gender,(*p).score);//ls = {999,"lisi",'F',89.7};printf("%d,%s,%c,%f\n",ls.num,ls.name,ls.gender,ls.score);return 0;}
#include<stdio.h>struct student{int num;char* name;double score;char gender;};int main(){struct student ST[3]={{1001,"zhangsan",89.7,'F'},{1002,"lisi",90.7,'M'},{1003,"wangwu",78.5,'F'}};ST[0].name = "hanmeimei";ST[1].name = "Lilei";ST[3].name = "Lily";int n;n = sizeof(struct student);printf("n=%d\n",n);printf("ST[0].name=%s\n",ST[0].name);return 0;}可以通过一个结构体变量给另一个结构体变量赋值,但是这两个结构体变量的类型必须一致
结构体指针
结构体数组
3、共用体
不同的数据类型可以使用共同的存储区域, 共用体也是一种数据格式,它能够存储不同的数据类型,但只能同时存储其中的一种类型。也就是说,结构可以同时存储int、long和double,共用体只能存储int、long或者double中的一种。共用体的句法与结构类似,但含义不同。
1 #include <stdio.h>
2
3 union AA
4 {
5 int a;
6 short b;
7 char c;
8 }aa;
9
10 int main()
11 {
12 printf("%p, %p, %p\n", &aa.a, &aa.b, &aa.c);
13 aa.a = 0x12345678;
14 printf("%d\n", sizeof(aa));
15 printf("%#x, %#x\n", aa.b, aa.c);
16 return 0;
17 }
编译结果:
0x804a01c, 0x804a01c, 0x804a01c
4
0x5678, 0x78
4、枚举
在实际的应用中,有些变量只有几种可能的取值
枚举定义时,会将这些变量的值一一列举出来,变量的值只限于列举出来的值的范围内
定义:enum 枚举名
{
枚举成员列表
};
一般用于错误码的定义
#include<stdio.h>enum weekday{Monday,Tusday,Wednesday=7,Thursday,Friday,Sarturday,Sunday};int main(){printf("Monday=%d\n",Monday);printf("Sunday=%d\n",Sunday);int n;n = sizeof(enum weekday);printf("n=%d\n",n);return 0;}
2 0
- (九)结构体共用体
- 九、结构体、共用体与枚举 十、位运算
- 结构体&&共用体
- 结构体,共用体
- 结构体、共用体
- 结构体、共用体
- 结构体&共用体
- 结构和共用体
- 结构体、共用体、枚举
- 结构体与共用体
- 枚举,结构体,共用体
- 结构体与共用体
- 结构体和共用体
- 共用体与结构体
- 结构体与共用体
- 共用体和结构体
- 结构体 枚举 共用体
- 结构体、共用体、枚举
- 《Android群英传》---读书笔记7
- [LeetCode]73. Set Matrix Zeroes
- javaWEB字符编码过滤器
- 2016.12.15有自己的博客还是很重要的
- http://blog.csdn.net/hguisu/article/details/38385371
- (九)结构体共用体
- iOS 通过URL获取图片,并保存到本地
- 第一次写博客
- char 字符
- c语言多人五子棋
- meta标签
- 字符串比对
- Qt上的OpenCV学习日记①之工程创建
- nginx设置请求body大小