读书人

请问指针 为什么 没有改变内存的值

发布时间: 2012-02-08 19:52:21 作者: rapoo

请教,指针 为什么 没有改变内存的值?
#include<iostream.h>

change(char* p)
{
cout<<"p="<<p<<endl;
p="zhang";
cout<<p<<endl;
}
void main()
{
char* a="dian";

change(a);
cout<<a<<endl; //why?
}

为什么 cout<<a<<endl; //why?
这行打印出来的是 dian,而不是zhang。
我在change函数里已经把a的值通过指针传递改成zhang了,
为什么最后打印出来的还是dian?

[解决办法]
实参是形参的一个副本,修改这个副本不影响实参.
[解决办法]

C/C++ code
#include <iostream> #include <cstring>using namespace std;int change(char* p) {     cout <<"p=" <<p <<endl;     strcpy(p, "zhang");     cout <<p <<endl;     return 1;} int main() {     char a[32]="dian";     change(a);     cout <<a <<endl; //看现在的代码,自己分析...另外不要写不伦不类的C++代码了    return 0;}
[解决办法]
这样就可以修改外面的指针了:
C/C++ code
void change(char** p) {     cout <<"*p=" <<*p <<endl;     *p="zhang";     cout <<*p <<endl; } void main() {     char* a="dian";         change(&a);     cout <<a <<endl; //why? }
[解决办法]
探讨
实参是形参的一个副本,修改这个副本不影响实参.

读书人网 >C++

热点推荐