(01-指针步长-12.01练习作业)
空指针和野指针
首先说下空指针和野指针,顾名思义,空指针就是给其一个空地址,而且没有存放任何东西。野指针,也不难理解,就是一个野孩子,没有家,在C语言中大概的意思就是,指向一个未知的地址,这种情况下运行的话,程序往往会崩溃掉,对于空的指针和野指针,我们要认识和理解,这样才不会在内存这边磕绊太多。
- 空指针
- 首先说下空指针把,空指针就是一个类型的变量指向NULL,这个东西能干嘛呢?按照我个人的理解就是:作为过度的容器,两个要换位置总还要一个用来临时存放的,那么这句话是什么意思呢?
- 就比如说我要定义一个指针,如果没有指向一个内存地址的话,程序运行就很有可能会崩溃掉,所以我就让这个指针指向一个空的地址,防止这个程序运行的时候会崩溃掉。
void TextKong()
{
char * p = NULL;
strcpy(p,"AAA");
}
int main(void)
{
TextKong();
}
- 像上面这种程序往往会崩溃掉,原因就是给一个没有内存的指针拷贝内存
- 野指针
- 野指针其实和空指针差不了太多,废话不多说,直接看下代码:
void Ye() // 野指针 注意事项
{
int * p ;
//strcpy(p,"111"); 未初始化指针就开始引用
char * q = Text() ;
printf("%s \n",*q);
printf("%s \n",*q);
}
// 测试释放空指针 -- 可以释放
void TextRelease()
{
int * a = NULL ;
free(a);
char *qqq = "111";
free(qqq);
// free(qqq); 释放一次之后 再无权限去操控,所以释放指针之后置空
}
int main(void)
{
Ye();
}