首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

返回这样的指针可以吗?该怎么解决

2012-03-29 
返回这样的指针可以吗?char*fun(char*p){......p++*pa returnp}这个指针应该是在栈里面的吧,能返回吗?

返回这样的指针可以吗?
char*   fun(char*   p)
{
        ......
        p++;
        *p   =   'a ';
        return   p;
}

这个指针应该是在栈里面的吧,能返回吗?

[解决办法]
可以返回,不过你返回干嘛呢,其实就是你传进来的 p 啊
[解决办法]
可以的。 p指向的地址還是有效的,因為p的指向是你傳進來的。你要注意的是你p++還有之前的操作,使得p的指向有改動,你得確認這些地址都是可以操作的(申請的空間之內)。
[解决办法]
我舉個例子吧。
char* fun(char* p)
{
p++;
*p = 'a ';
return p;

}

char str[10];
char *retp;

retchar = fun( str );

則 retp = &str[1];
str[1]= 'a ';
[解决办法]
完全可以的
你可以参考以下这个
http://community.csdn.net/Expert/TopicView.asp?id=5574625
[解决办法]
所谓返回一个指针,其实返回的是它指向的地址.

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

因此你的返回是可以的.

但是这个函数在接收数组的时候还好办,如果接收单个变量的话就要出内存问题了

热点排行