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

一道C++题,帮忙给看一下!该如何解决

2012-03-09 
一道C++题,帮忙给看一下!#include iostream.h#include string.hpoint(char*p){p+3}main(){charb[4]

一道C++题,帮忙给看一下!
#include <iostream.h>  
#include <string.h>  
point(char   *p)   {p+=3;}  
main()  
{  
char   b[4]={ 'a ', 'b ', 'c ', 'd '},*p=b;  
point(p);  
cout < <*p;  
}

结果:a.

通过函数point()不是改变了p吗?为什么结果不是d呢?

帮忙解析一下吧?

谢谢!


[解决办法]
结果是不可改变的,结论就很清楚了:你分析错了。函数point()没有改变main函数里面的p。
[解决办法]
调用point(p)的时候会在栈区复制一个指针(假设为p1)并p1=p;跳出该函数时会销毁p1,现在你知道为什么不能改变p了
[解决办法]
同意楼上。point函数的参数是采用传值方式,不是采用传址。point(p)改变的只是p的一个拷贝,函数返回后这个拷贝销毁,不会影响到p本身。要修改p这个指针,参数可以采用指向指针的指针,或者指针的引用。

[解决办法]
同意。。。
[解决办法]
void point(char **pchar)
{
*pchar+=3;
}

main()
{
char b[]={ 'a ', 'b ', 'c ', 'd ', '\0 '};
char *p=b;
point(&p);
cout < < *p < < endl;
return 0;
}

热点排行