void myalloc(char x,int n)
{
x = (char)malloc(n*sizeof(char));
memset(x,0,n*sizeof(char))
}
int main()
{
char *g="String";
myalloc(g,20);
cout<<g<<endl;//输出为什么还是"String"?
}
memset之后为什么g依旧输出为string?而没有初始化
void myalloc(char x,int n)
{
x = (char)malloc(n*sizeof(char));
memset(x,0,n*sizeof(char))
}
int main()
{
char *g="String";
myalloc(g,20);
cout<<g<<endl;//输出为什么还是"String"?
}
memset之后为什么g依旧输出为string?而没有初始化
很显然啊,第一个问题:值传递还是址传递的问题,你用的是值传递,你传进去的是g这个指针而已,所以说你改变指针根本没有对指针指向的空间进行改变,解决办法就是传地址,传指针的地址,第二个问题,你的函数myalloc 的第一个参数的类型是char 类型的,但是系统函数malloc 返回的是void * 类型的指针,你确定你编译可以通过。