void freePtr(T* & p), p是指针引用吧

kolapig 2009-11-22 03:35:44
指针引用一般什么时候用到啊
...全文
109 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
xg198804 2009-11-22
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 xg198804 的回复:]
是指针引用,用指针引用的时候一般就可以用指向指针的指针,不管是指针引用还是指向指针的指针,他们都还是在传递地址,只不过这时引用的是一个指针变量,指针指向的也是一个指针变量.而当你想把在函数体内对参数的修改反应到外面时,就应该用引用或者指针.可以举个例子:
//这段代码用于动态获得内存
void GetMemory(char*& p,int num)
{
  p=(char*)malloc(sizeof(char)*num);
}
而此时你一般是要把这个申请内存得到的指针在外面用的,所以需要用指针引用或指向指针的指针,
而像上面这样的问题一般又都可以采用函数返回指针的办法解决.如上面的代码可以用下面的代码得到同样的效果:
char* GetMemory(char*& p,int num)
{
  p=(char*)malloc(sizeof(char)*num);
  return p;
}
而在return 一个指针的时候又一定要注意不要返回一个指向"栈内存"的指针,也就是函数内局部指针变量,因为栈内存变量在函数结束就自动消失了,此时指针就指向了一个非法内存上,成了"野指针".
相信这样讲比较清晰了吧
[/Quote] 不好意思:上面的第二段代码中函数的第一个参数写错了,应该是char*
xg198804 2009-11-22
  • 打赏
  • 举报
回复
是指针引用,用指针引用的时候一般就可以用指向指针的指针,不管是指针引用还是指向指针的指针,他们都还是在传递地址,只不过这时引用的是一个指针变量,指针指向的也是一个指针变量.而当你想把在函数体内对参数的修改反应到外面时,就应该用引用或者指针.可以举个例子:
//这段代码用于动态获得内存
void GetMemory(char*& p,int num)
{
p=(char*)malloc(sizeof(char)*num);
}
而此时你一般是要把这个申请内存得到的指针在外面用的,所以需要用指针引用或指向指针的指针,
而像上面这样的问题一般又都可以采用函数返回指针的办法解决.如上面的代码可以用下面的代码得到同样的效果:
char* GetMemory(char*& p,int num)
{
p=(char*)malloc(sizeof(char)*num);
return p;
}
而在return 一个指针的时候又一定要注意不要返回一个指向"栈内存"的指针,也就是函数内局部指针变量,因为栈内存变量在函数结束就自动消失了,此时指针就指向了一个非法内存上,成了"野指针".
相信这样讲比较清晰了吧
mstlq 2009-11-22
  • 打赏
  • 举报
回复
大概就是想用双重指针的时候……

64,672

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧