typedef,结构体,共用体,联合体
来源:互联网 发布:apk软件注册码破解 编辑:程序博客网 时间:2024/05/16 01:50
typedef的用途:
封装数据类型,方便移植
简化函数指针的定义
结构体:不同类的型元素汇聚。
(1)、在声明类型的同时定义变量:
struct结构体名{
成员列表
}变量名列表;
(2)、直接定义结构体类型变量
struct
{
成员列表
}变量名表列;
指向结构体变量的指针
定义形式:struct结构体名 *结构体指针名;
例如:struct student *p;
#define_CRT_SECURE_NO_WARNINGS //去掉安全检查
#include<stdio.h>
#include<stdlib.h>
structmydata
{
intnum;
charstr[100];
};
voidmain()
{
//int a;
//int *p;
//struct mydata *p;
//printf("%d", sizeof(p));
structmydatamd; //实例化结构体
md.num = 99;
sprintf(md.str,"gogogo");
printf("md.num=%d,md.str=%s",md.num,md.str); //打印数据
structmydata *p; //p存储地址 struct mydata决定了大小还有如何解析
printf("\n%d",sizeof(p));
p = &md;//结构体指针初始化,存储地址
printf("\n(*p).num=%d,(*p).str = %s", (*p).num, (*p).str);
printf("\np->num = %d,p->str=%s",p->num,p->str);
//指针访问结构体,第一种方式(*p).成员变量,第二种p->成员变量
getchar();
}
结构体变量:
简单案例:
结构体成员地址从低到高连续分配,首成员对应低地址。
公用/联合体(union):使用不同类型的变量共占用一段内存(相互覆盖),次共用体大小为元素中最大字节变量。
共用体成员索引:可以通过.成员变量符,也可以通过 à指针索引。
union案例
枚举变量:
在内存中申请的。
malloc()返回的类型是:void *类型的
2、malloc之后要记着释放,使用free函数。否则会造成内存泄露,导致其它程序不能再使用这块儿内存了。
操作系统在管理malloc的时候是一下这种方式:
// | 地址 |
// | 大小 |
调用malloc的时候,系统每次都会为malloc创建一个节点,并记录本次malloc的首地址和malloc的大小。
malloc内存里面申请出来的值是什么值?
在gcc这个编译器下,malloc默认把申请的内存中的初始值变成0,但是在不同的编译器下回有所不同。
如果想将malloc中申请的内存的值变成0,可以使用memset(p,0x0,100);如果想使用这个函数,要加上头文件<string.h>
calloc()
realloc:当内存不够了时候,可以通过realloc继续申请内存空间。
realloc的实现策略:
当malloc后面有足够的存储空间。这时候相当于把malloc的首地址不变,只是把malloc的大小改大些。
如果malloc后面的存储空间不够,那么这时候realloc新开辟一个地址空间,然后将原来malloc的内存里的内存复制到新开辟的内存空间中。
- typedef,结构体,共用体,联合体
- 联合体,共用体
- union 共用体 联合体
- 宏(#define)和类型别名(typedef)在结构和共用体(联合体)类型定义中的应用
- 结构体,共用体,枚举体,typedef
- 结构体、共用体、枚举和typedef
- C语言结构、共用体、Typedef
- 共用体(联合体)与结构体的区别
- 共用体(联合体)与结构体的区别
- 共用体(联合体)与结构体的区别
- 联合体(共用体)union
- 共用体/联合体的使用
- 内存对齐 & 联合体(共用体)
- C语言结构体,联合体,枚举与typedef
- 共用体,枚举,typedef
- 结构体,共用体以及typedef的总结
- 结构体,共用体,typedef与define的区别,链表
- C语言union(联合体 共用体)
- 使用多个values文件造成样式不统一的问题
- 系统故障及软件质量
- 简易的验证码方法
- 【Cocos2d-x 2.2.2 自学笔记之一】利用自己的jar快捷创建项目
- Android中使用多进程的应用程序注意
- typedef,结构体,共用体,联合体
- 【Linux Kernel】抢占
- TKinter里面如何引入图片
- android.os.NetworkOnMainThreadException异常
- Linux 文件系统剖析
- 快速学习C语言一: Hello World
- Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
- 【Linux kernel】中断
- SugarCRM安装与初探