请问,指针 为什么 没有改变内存的值
请教,指针 为什么 没有改变内存的值?
#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?
------解决方案--------------------
实参是形参的一个副本,修改这个副本不影响实参.
------解决方案--------------------
#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? }
------解决方案--------------------