返回这样的指针可以吗?

sunnysmile 2007-06-28 09:27:57
char* fun(char* p)
{
......
p++;
*p = 'a';
return p;
}

这个指针应该是在栈里面的吧,能返回吗?
...全文
327 20 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
locust1980 2007-06-29
  • 打赏
  • 举报
回复
p已经修改了,没有必要return,但是你定义的指针函数,只能说调试没有问题
halfstudio 2007-06-29
  • 打赏
  • 举报
回复
最好的方法就是你自己亲自试一试。
netxuning 2007-06-29
  • 打赏
  • 举报
回复
学习
yy_msdn 2007-06-29
  • 打赏
  • 举报
回复
char* fun(char* p)
{
......
p++;
*p = 'a';
return p;
}
其实没有必要返回,因为你传入参数的时候p的值就在原文中有,你修改的是p指向堆栈的内容,而且你修改了p的值,所以返回可能没有意义吧
jixingzhong 2007-06-29
  • 打赏
  • 举报
回复
这样的返回可能在 递归 中使用比较适合 ...
jixingzhong 2007-06-29
  • 打赏
  • 举报
回复
返回有效
shu_yoyo 2007-06-29
  • 打赏
  • 举报
回复
可以啊,
xddzccn 2007-06-28
  • 打赏
  • 举报
回复
可以了
fengdream 2007-06-28
  • 打赏
  • 举报
回复
完全可以的
你可以参考以下这个
http://community.csdn.net/Expert/TopicView.asp?id=5574625
cceczjxy 2007-06-28
  • 打赏
  • 举报
回复
可以的.
agaric 2007-06-28
  • 打赏
  • 举报
回复
我舉個例子吧。
char* fun(char* p)
{
p++;
*p = 'a';
return p;

}

char str[10];
char *retp;

retchar = fun( str );

則 retp = &str[1];
str[1]='a';
星羽 2007-06-28
  • 打赏
  • 举报
回复
p是栈里的,但p指向的内容,不管是堆还是栈上,在你函数返回时都有效
agaric 2007-06-28
  • 打赏
  • 举报
回复
可以的。 p指向的地址還是有效的,因為p的指向是你傳進來的。你要注意的是你p++還有之前的操作,使得p的指向有改動,你得確認這些地址都是可以操作的(申請的空間之內)。
ribut9225 2007-06-28
  • 打赏
  • 举报
回复
为什么要返回呢?
好像你在函数里已修改指针p了啊
星羽 2007-06-28
  • 打赏
  • 举报
回复
可以返回,不过你返回干嘛呢,其实就是你传进来的 p 啊
WizardK 2007-06-28
  • 打赏
  • 举报
回复
没问题,不就是地址值嘛
xlbdan 2007-06-28
  • 打赏
  • 举报
回复
所谓返回一个指针,其实返回的是它指向的地址.

所以在你返回的时候,指针变量被销毁,但它指向的地址还存在,并被返回

因此你的返回是可以的.

但是这个函数在接收数组的时候还好办,如果接收单个变量的话就要出内存问题了
freshui 2007-06-28
  • 打赏
  • 举报
回复
p本来就是你传进来的参数,
返回的是你传进来的p的副本的副本

内容和传进来的参数p不同, 因为你++p了 :)
hwkobeliulili 2007-06-28
  • 打赏
  • 举报
回复
我也觉得可以,呵呵
qlnqln 2007-06-28
  • 打赏
  • 举报
回复
可以

70,024

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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