#include
using namespace std;
void getMem(char* p){
p=new char[100];
memset(p,'0',100);
//cout<<p<<endl;
}
int main()
{
char* str=NULL;
getMem(str);
char* p2="hello";
strcpy(str,p2);
cout<<str<<endl;
return 0;
}
这段程序为啥 运行不通过啊,恳请大神解答……
char* str=NULL;
getMem(str);
这个运行完,str依然等于NULL
查看参数的传递....
你需要指向指针的指针,然后这样调用 getMem(&str); 否则,分配的内存地址无法传递出来。
将函数改成 void getMem(char* &p) 就ok了
void getMem(char** p)
{
*p = new char[100];
memset(*p,'0',100);
}
int main()
{
char* str=NULL;
getMem(&str);
char* p2="hello";
strcpy(str,p2);
cout<<str<<endl;
return 0;
}
改成指针的引用就可以了。
参数中的char *p,与传过去的char *str 不是一个人啊,p只是str的复制,你只是将p赋值了,但是str本身没有赋值
所以要传入 char **p 或者 char *&p
推荐用 char **p