void GetMemory(char*& memorystr, int num)
{
memorystr = new char[num];
}
int main(void)
{
char* str = NULL;
GetMemory(str, 6);
memcpy(str, "china", 5);
std::cout << str;
return 0;
}
void GetMemory(char** memorystr, int num)
{
*memorystr = new char[num];
}
int main(void)
{
char* str = NULL;
GetMemory(&str, 6);
memcpy(str, "china", 5);
std::cout << str;
return 0;
}
两个都可以将china拷贝到str里面,它们是否等效?但是他们的优劣势?什么情况下该用那种?
就你的代码来说是一样的,都可以
以这两个例子的应用来说,此两者等效。
如果在函数外有对所传参数的指针进行调用修改参数内容,如额外有个char* str2的变量,则当发生 str->str2做地址调用时,这两者会有区别。
这两者没有什么优劣势可言,只看实际应用中对地址调用的需求情况如何而采用不同的调用方式。正常情况下只用**二级指针方式。