指针

来源:互联网 发布:网络真人赌博是真的吗 编辑:程序博客网 时间:2024/06/08 05:10
指针
int num=5;
int *p=#   假设num的地址为0x1000;
p所对应的内存的值为0x1000;p
p所指向的内存的值为 5;*p


二级指针所对应的内存包含的值是一级指针的地址;
二级指针所指向的内存的值是一级指针对应的内存里面的值
高级指针以此类推;


野指针
给指针定义之后没有初始化,由于他属于局部变量,被保存在栈区间,操作系统会随机给他赋一个随机值,这样会导致内训泄漏,从而导致段错误。


为了防止这一类的错误 我们有以下6种方法
1.养成良好的编码习惯  在定义指针类型的时候 如果为初始化  先定义为NULL  这是一个宏定义(define  NULL (void *)0)  这样可以提醒编程人员注意这个空指针
    (void *)是一个万能指针,能够保存任何类型的指针  但不能进行读取  如不能用prntf函数来输出。
2.初始化指针时,用malloc函数为指针分配内存空间,malloc函数返回的是所分配的空间的地址
char *ptr=(char *)malloc(sizeof(char)*100)  使用sizeof(char)*100可以保证在不同的操作系统上都能分配100个char类型的内存空间  增加代码的移植性。
3.在给指针分配内存空间时不一定分配成功  所以需要检测是否分配成功
malloc函数分配失败时会返回一个null值
if(ptr=NULL)
{
    printf("malloc error");
    exit(1);
}
4.分配空间成功后清空内存空间
使用memset函数或者bzero;
memset(ptr,'0',sizeof(char)*100);
bzero(ptr,sizeof(char)*100)
5.空间使用完成之后要释放空间  使用free函数
free(ptr);
6.释放完指针没有指向内存空间又会变成一个野指针  所以要将这个指针赋值为NULL 
ptr=NULL;
0 0
原创粉丝点击