c语⾔中指针及其作⽤,c语⾔中指针的使⽤⽅法
c语⾔中指针的使⽤⽅法
在c语⾔的学习中,我们遇到的最⼤问题莫过于指针的使⽤了。指针是C语⾔的⼀⼤特⾊,使⽤指针我们可能灵活的访问内存。但这⼀⼤特性也同时给我们带来了很⼤的问题,不当的使⽤指针就会给我们程序带来⼤的灾难。现在我就给⼤家讲⼀讲我使⽤指针的⼀些体会吧。
⼀、定义指针的时候⼀定要初始化。
变量定义的时候给变量初始化,这是保证不出错的⼀个很好的习惯。尤其是在指针的使⽤上,如果我们没有给指针初始化,就会出现野指针,该指针的指向并不是我们所希望的,⼀旦错误的释放了这个指针,就会发⽣内存的.访问。那么如何初始化指针变量呢,⼀般有以下⼏种⽅法:
1、初始化空指针
int* pInteger=NULL;
2、⽤已有的变量初始化
int length=5;
int* pInteger=&length;
3、⽤内存分配函数给指针分配空间
int* pInteger=(int*)malloc(10*sizeof(int));//为指针分配⼤⼩为10个整数的内存空间。
⼆、正确的申请和释放内存
指针使⽤之后,如果不释放指针所使⽤的内存,就会造成内存的泄露,这样就会有⼤量内存由于没能释放,别的程序不可以使⽤这部分内存,如果⼀个程序不停申请内存⽽不去释放内存,很快就会造成系统的崩溃。那么如何正确的申请和释放内存呢。
1、指针初始化,上⾯已讲
2、正确的申请内存
如何申请内存才算是正确的申请内存呢?⾸先要判断指针是否为空,如果不为空,则释放该指针所指向的内存块,如果不释放这块内存,⽽直接就申请内存,就会造成内存的泄露。申请内存后,⼀定要判断是否申请成功。
如:int* pInteger=NULL;//指针定义处
...
if(pInteger != NULL)
{
free(pInteger);
pInteger=NULL;//指针释放之后并不为空,要设置其为空
}
pInteger=(int*)malloc(10*sizeof(int));
if(pInteger != NULL)
{
printf("内存申请没有成功\n!");
exit(0);
}
...
3、内存释放
程序使⽤完了指针,⼀定要记得释放指针指向的内存。释放后⼀定要记得设置指针为空指针。因为free函数在释放指针后,只是单纯的释放了该指针指向的内存空间,⽽没有将指针赋为空值。所以⼀定要记得在释放指针后将指针赋为空值。
如:
int* pInteger=NULL;//指针定义处
...
free(pInteger);//释放指针
pInteger=NULL; //指针赋为空值
三、使⽤指针时⼀定要判断指针是否为空
在使⽤指针时⼀定要判断指针是否为空,如果为空,则做相应的操作。如果不做判断,则可能错误的使⽤空指针。
如:char* dest=NULL;sizeof 指针
...
strcpy(dest,"string");//如果dest为空则出错
正确的使⽤⽅法为:
if(dest == NULL)
{
dest=(char*)malloc(7*sizeof(char));//因为字符串以“\0”结束,
//所以要申请7个字符的内存
//判断内存申请是否成功
...
}
strcpy(dest,"string");
在指针的使⽤过程中,基本上要注意的问题就是这些,如果你严格的按照上⾯的⽅法使⽤指针,那么,你就可以避免常见的指针错误了。希望这篇⽂章可以给你带来帮助,不过在指针的使⽤过程中,还会遇到很多的问题。希望和⼤家⼀起分享。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论