memset 指针传递问题

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?而没有初始化

c++

1个回答

很显然啊,第一个问题:值传递还是址传递的问题,你用的是值传递,你传进去的是g这个指针而已,所以说你改变指针根本没有对指针指向的空间进行改变,解决办法就是传地址,传指针的地址,第二个问题,你的函数myalloc 的第一个参数的类型是char 类型的,但是系统函数malloc 返回的是void * 类型的指针,你确定你编译可以通过。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐