C++中的一个问题

来源:百度知道 编辑:UC知道 时间:2024/07/02 01:23:45
Void GetMemory(char **p, int num){
*p = (char *)malloc(num);
}
void Test(void){
char *str = NULL;
GetMemory(&str, 100);//问题 : 为什么是&str ?
strcpy(str, "hello");
printf(str);
}
我无法理解啊~~ 谁能帮我讲解下 谢谢

GetMemory(&str, 100);//问题 : 为什么是&str ?
因为指针相对于函数来说是局部变量,通过传值的无法修改
你要在函数里面new地址,需要修改具体的值,只能通过传地址,这就是&str,指针的地址来修改具体的数值

因为你的函数要申请给定大小的内存空间 并且让你传入的实参指针str指向该空间 如果你用的是str的话 虽然你传的是一个指针 但是那只是指针值的一个复制 这样申请的内存将分配给了局部指针p 却不是str 理解了吗 那么用&str的话 形参自然就要用二级指针了

学的不错