一 数据类型
1 “类型”是对数据的抽象;
2 类型相同的数据有相同的表示形式、存储格式以及相关的操作
3 程序中使用的所有数据都必定属于某一种数据类型
4 数据类型分类
1)简单类型
a)基本型:整型、浮点型、字符型、空类型
b)用户自定义类型:枚举(enum)
2) 结构类型
数组、结构体、联合体、类(c++)
3)指针类型
5 数据结构的本质:固定内存大小的别名。
6万能类型void
1)void的字面意思是“无类型”,void *则为“无类型指针”, void *可以指向任何类型的数据
2)void指针意义
a)C语言规定只有相同类型的指针才可以相互赋值
b) void*指针作为左值用于“接收”任意类型的指针
c)void*指针作为右值赋值给其它指针时需要强制类型转换
char *p2 = (char *)malloc(sizoeof(char)*20);
二 变量
1 概念 :既能读又能写的内存对象,称为变量;若一旦初始化后不能修改的对象则称为常量。
2 本质:一段连续内存空间的别名。
3 修该方法:修改方法:直接 、间接
三 内存四区
1 程序运行时建立流程
1、操作系统把物理硬盘代码load到内存
2、操作系统把c代码分成四个区
3、操作系统找到main函数入口执行
2 各区元素分析
1)栈区:由编译器自动释放,存放函数的参数值,局部变量的值
char *getmem2()
{
char buf[20];//临时变量,栈区存放
strcpy(buf,"12344");
return buf;
}
2)一般由程序员分配和释放,若没释放,程序结束后可能由操作系统回收
char * getmem(intnum)
{
char *p = NULL;
p = (char*)malloc(sizeof(char) * num);
if (p == NULL)
returnNULL;
return p;
}
3)全局区(静态区 )
4 )常量区:字符串常量和其他常量的存储位置,程序结束后由操作系统释放
5 )代码区
四 指针体铁律
1)指针是一种数据类型:
a)指针也是一种变量ÿ