#include <iostream>
using namespace std;
void fun(char* str)
{
str = new char[6];
memcpy(str,"hello/0",6);
}
void main()
{
char* str = NULL;
fun(str);
cout << str << endl;
system("pause");
}
输出什么呢?今天遇到这个问题了,还是基础不牢,郁闷了会儿;
总结了下,为了让str从函数中传出来,除了return外,还有2个方法,其实都是一个含义:
void fun(char*& str)//1。指针的引用,这种比较好,外面的调用也没有改变。
{
str = new char[6];
memcpy(str,"hello/0",6);
}
void fun(char** str)//2.指针的指针,这种方法调用时有改变。
{
*str = new char[6];
memcpy(*str,"hello/0",6);
}
其原因都是因为以前传入的是指针值,而函数里面的str地址是另一个;
修改的2种方法就是让str传指针地址。