第七天(c内存)
来源:互联网 发布:机顶盒 电视直播软件 编辑:程序博客网 时间:2024/05/22 09:47
内存,程序在内存中运行。(进程)
栈:存放的是值类型数据,前提是局部变量,是由系统分配和释放的,效率高,优先使用栈空间,优先使用局部变量。两个函数中相同名字的常量在栈中是不会冲突的,因为存放的区域并不一样。
堆:存放的是引用类型的,用户自己分配,自己释放malloc---free
void *malloc(分配空间大小);
int *p=malloc;
free(p);//不会对内存进行操作。free完之后就是把空间释放了然后可以再存储,不free的话原本的数据是不会改变的。
数据区:全局变量,常量。存储类型(静态)static,数据段的数据一直存在直到程序结束。
static int a=100;全局作用域
void fun(){
static int a =200;函数作用域
a++;
printf("%d\n",a);
}
a,b都存储在数据段,静态变量只初始化一次。
fun();a=201;
fun();a=202;
fun();a=203;
自动,外部,寄存器(多文件开发)
auto extern register
auto--默认
extern---多个文件共享一个变量。全局同名变量
如果加上static限制了变量在本文件中使用
多文件编译:gcc -o a.c b,c
register ---寄存器变量 (速度快,资源少,不允许取寄存器变量地址)寄存器变量不一定放在寄存器。
register int num=0; (是否放在寄存器是由寄存器决定,申请为寄存器变量就不能用取地址符取地址)
一个变量被循环重复利用的次数很多的时候就定义为寄存器变量。
预处理(头文件,调试)
头文件(避免头文件重复加载)
#ifndef xxx
#define xxx
文件文件内存
#endif //xxx
//必须一行完成(如果写不完就用换行符\换行)
#define Debug(x) printf("%s-%d-%s\n",_FILE_,_LINE_,x)
_LINE_表示行
定义常量
#define MAXNUM 100;
跨平台:(在不同平台中的代码不一样,根据平台选择代码)
#define IOS
#ifdef IOS
Debug("ios");
#else
debug("linux");
#endif
return 0;
#if 0 //if后面必须是真假值,不能写其他
屏蔽代码段
#endif
自定义数据类型(把已有的数据类型定义别名)
typedef unsigned int uint_32;
作用是增强程序的可读性。
typedef int(*fun)(int); 可以用fun定义一个指针,fun p;(p就是一个函数指针);
- 第七天(c内存)
- C++primer第七天
- C语言第七天
- C第七天
- c/c++第七天
- 学习C 的第七天
- 标准C语言第七天
- C语言暑期实习 第七天
- C语言学习第七天(宏)
- C语言的第七天学习
- 第七天
- 第七天
- 第七天
- 第七天
- 第七天
- 第七天
- 第七天
- 第七天
- 彻底解决Spring MVC 中文乱码 问题
- phpStudy 创建多个站点,绑定域名!
- OGRE关于 Demo_DeferedShading 例子的分析
- java开发中JDBC连接数据库代码和步骤
- UML第九集(08,09)之用例图
- 第七天(c内存)
- Tomcat start Exception及解决办法
- IIS部署错误-拒绝访问 CS0016
- Tomcat集群和Session共享的配置方法
- iOS设置UICollectionViewCell的间距
- P2P对等网络技术原理整合
- 多线程学习笔记
- Android中DataTime控件的使用(九)
- 邮件发送功能