指针

一:野指针:

char *ptr

定一个指针,没有赋值,用NULL

char *ptr = NULL 即表示指向空,不能再做赋值,不能对0地址操作访问。

 

//#define NULL void *o

如果出现段错误,看看对NULL有没有赋值。

 

如何避免野指针而不是杜绝:

1.如果没有对指针进行赋值,可把指针指向空,可避免野指针

2.如果出现段错误,可查看有没有对NULL进行赋值

3.当你要把指针指向的空间赋值时,应先分配一下空间

 

char *ptr=hello world

*ptr=L

不对,会出现段错误,ptr是个常量,没有办法赋值。

 

ptr=char *malloc100*sizeofchar);蓝色部分是为了增加可移植性

指针必须是相同类型赋值,如果不是相同类型1.会越界2.取数据不完整

 

void*:称为万能指针

缺点:不能作取值操作

 

 

 

二:获取字符串的两种方法。以及malloccallocralloc的使用注意点

获取字符串两种方法

1.char ptr[100];

  1#include<stdio.h>

  2 #include<stdlib.h>

  3 #define MAX_SIZE 1024

  4 int main()

  5 {

  6     char *ptr=(char *)malloc(MAX_SIZE*sizeof(char));   malloc分配内存空间。

  7     if(NULL==ptr)

  8     {

  9         printf("malloc error!\n");         看内存是否分配成功。

 10         exit(1);

 11     }

 12         //memset(ptr,'\0',sizeof(ptr));     其中‘\0’是表示拿0来填充这100个字节。

 13         memset(ptr,'\0',sizeof(char)*MAX_SIZE);    指把空间全部清空。

 14         //bzero(ptr,MAX_SIZE)

 15         scanf("%s",ptr);

 16         printf("ptr=%s\n",ptr);

17         free(ptr);     释放空间。释放以后,ptr没值了,但是还保存了原来的地址,      如果不置为空,会变成野指针

 18         ptr=NULL;

 19         return 0;

 20 }

malloc的头文件#include<stdlib.h>

 

用了空间再用一次的时候一定要记得清空

 

通常都是先分配空间,然后检验空间是否分配成功,把空间里面的残留元素都清空,然后初始化,再释放,最后再初始化。

通常用memset来初始化一块内存。

 

 

mallocrelloccalloc的区别。

char *ptr=(char *)malloc(MAX_SIZE*sizeof(char));

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值