Linuxc基础 十七


宏函数 :用来替换函数减少运行空间
#define ADD(x,y) (x+y)
1、避免函数入栈,出栈等开销,可以提高程序运行效率
2、多次调用,会使代码变的庞大
很小的函数可以使用宏函数
宏的有效范围:从宏定义的位置开始到文件结束或取消宏定义。 (#undef 取消宏)
1、不做作用域检测
2、不做类型检测
条件编译
ifdef
编译时加-D是定义一个宏
“#x”将宏参数转换成字符串
##把两个宏链接到一起
static
1、修饰局部变量:可以延长局部变量的生命周期知道程序结束才会被释放(静态变量没有在函数的内部)
2、修饰全局变量:只能再本文件使用,其他文件不可用
3、秀实函数:只能再本文件使用,其他文件不可用
extern 变量声明
Extern int g_a;//g_a这个变量可能存在其他文件中,如果用的时候本文件没有找到,去其他文件去找。
const
修饰变量:将变量变成只读属性 ,不能通过修饰变量名改变变量空间的值。
const只是不能通过修饰的变量改变空间的值,不代表空间的值不能改变。
Const int p1=&a;//修饰不能通过改变指向的空间的值可以理解为p1不能变。
Int *const p2=&a;//指针指向不能变,p2不能变可以通过p2改变指向空间的值。
Const *const p3=&a;//指针指向不能变,只想空间的值不能变。
const修饰的对象:将变量类型去掉和谁最近就是修饰的谁。
typedef
给类型重命名
例如 typedef int INT32;
malloc
malloc:在堆上分配空间
头文件:#include <stdlib.h>
参数:要分配空间的大小,单位为字节
返回值:只想分配的空间的指针
Void *malloc(size t size);
free释放堆上的空间
Void free(void *ptr);
参数:指向要释放的空间的指针
1、分配单个变量空间
int *pa=(int *)malloc(sizeof(int)/sizeof(char));
如果分配成功指向分配的指针
如果分配失败返回NULL
释放完之后指针指向NULL
2、分配一维数组
Int a[10];
Int *pa=(int *)malloc(sizeof(int)/sizeof(char)*10);
3、分配二维数组
int a[3][4];
int (pa)[4]=(int ()[4])malloc(sizeof(int)/sizeof(char)34);
分配不连续空间
int **p=(int **)malloc(zsieof(int *)/sizeof(char)*3);
if(NULL==p)
{
;
}
int i;
for(i=0;i<3;i++)
{
p[i]=(int *)malloc(sizeof(int)/sizeof(char)*4);
}
for(i=0;i<3;i++)
{
free(p[i]);
}
free(pa);
realloc 重新分配空间(空间拓展)要连续空间
重新分配时,使用新指针不要使用原指针
memset(buf,0,sizeof(buf));

猜你喜欢

转载自blog.csdn.net/qq_41936758/article/details/84666830