2 u013158924 u013158924 于 2015.05.28 10:45 提问

C++问题!!!!!!!!!!!!!!!!!!!!!!!!!大神进!!!!!!!!!!
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;

}
这段程序为啥 运行不通过啊,恳请大神解答……

6个回答

jymfist
jymfist   2015.05.28 10:54

char* str=NULL;
getMem(str);

这个运行完,str依然等于NULL

查看参数的传递....

91program
91program   Ds   Rxr 2015.05.28 10:59

你需要指向指针的指针,然后这样调用 getMem(&str); 否则,分配的内存地址无法传递出来。

ljc998
ljc998   2015.05.28 11:06

将函数改成 void getMem(char* &p) 就ok了

a1193561652
a1193561652   Rxr 2015.05.28 11:15
 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;
}
VisualEleven
VisualEleven   Ds   Rxr 2015.05.28 13:49

改成指针的引用就可以了。

henuyx
henuyx   2015.05.30 10:16

参数中的char *p,与传过去的char *str 不是一个人啊,p只是str的复制,你只是将p赋值了,但是str本身没有赋值

所以要传入 char **p 或者 char *&p

推荐用 char **p

Csdn user default icon
上传中...
上传图片
插入图片