C++问题!!!!!!!!!!!!!!!!!!!!!!!!!大神进!!!!!!!!!!

#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