Chinaunix首页 | 论坛 | 博客
  • 博客访问: 299743
  • 博文数量: 70
  • 博客积分: 1990
  • 博客等级: 上尉
  • 技术积分: 686
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-02 08:52
文章分类

全部博文(70)

文章存档

2015年(2)

2014年(9)

2013年(2)

2012年(20)

2011年(1)

2010年(36)

分类: C/C++

2010-12-01 15:32:06

1.形参在函数定义时并没有分配明确的内存空间,只有当函数被调用时,形参才被分配内存空间,也在此时才从实参单元获取相应的值。一旦函数调用结束,形参所占用的存储空间会被释放。
2.指针作为形参,指针的内容改变,函数返回时这种变化是可以带回的;指针本身的地址改变,函数返回时这种变化将无效。参考 my_pointer.c
3.野指针:指针地址不可预料的指针。主要出现在下面3个地方:
1)指针没有初始化就使用,指针未初始化时就是个野指针;
2)指针用于动态内存分配,free之后该指针就是个野指针,最好让该指针=NULL;
例子:
char *p=(char *)malloc(100);
strcpy(p,"hello world!");
puts(p);
free(p);
if(p!=NULL)  //free之后p成为野指针,不一定为空,这里的判断没有用
strcpy(p,"test"); //这里的野指针使用很危险
puts(p);
3)函数返回局部变量地址也会成为野指针,因为局部变量在函数返回后就在栈中被销毁。
例子:
char *test()
{
 char str[]="hello";
 return  str;
}
main()
{
 char *p;
 p=test();
 puts(p); //野指针
}
 
阅读(887) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~