问题描述
- 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
时间: 2024-12-02 22:06:21