函数中局部变量char *被Destroy了造成取出数据不对, 有什么办法搞定这段小代码呢? [附Code]解决方案
函数中局部变量char *被Destroy了造成取出数据不对, 有什么办法搞定这段小代码呢? [附Code]
#include <iostream>
using namespace std;
int GetString( char *pc )
{
pc = "abcdefg ";
return 100;
}
int main( void )
{
int i = 1;
char *pi;
GetString( pi );
cout < < pi < < endl;
getchar();
return 0;
}
输出不对, 估计是局部变量被Destroy的缘故,
菜问: 在不改动GetString()函数参数类型及返回值的情况下(最好该函数全部不改动), 有什么办法让输出是 "abcdefg "?
------解决方案--------------------
int GetString( char **pc )
{
*pc = "abcdefg ";
return 100;
}
------解决方案--------------------
int GetString( char *&pc )//C++中可以用指针的引用
{
pc = "abcdefg ";
return 100;
}
------解决方案--------------------
int GetString( char *pc )//这种写法的问题是,pc是main中pi的副本
{
pc = "abcdefg "; //所以这里对pc的修改并不会修改到main中pi
return 100;
}
------解决方案--------------------
GetString( pi );
cout < < pi < < endl;
这里 pi 是指向char类型的指针变量啊,是个32位值,而且你没初始化pi,pi是个野指针,lz代码大大有问题
------解决方案--------------------
按值传递与按引用传递参数的问题
------解决方案--------------------
前面都给了解答了
要么指向指针的指针,要么传引用
#include <iostream>
using namespace std;
int GetString( char *pc )
{
pc = "abcdefg ";
return 100;
}
int main( void )
{
int i = 1;
char *pi;
GetString( pi );
cout < < pi < < endl;
getchar();
return 0;
}
输出不对, 估计是局部变量被Destroy的缘故,
菜问: 在不改动GetString()函数参数类型及返回值的情况下(最好该函数全部不改动), 有什么办法让输出是 "abcdefg "?
------解决方案--------------------
int GetString( char **pc )
{
*pc = "abcdefg ";
return 100;
}
------解决方案--------------------
int GetString( char *&pc )//C++中可以用指针的引用
{
pc = "abcdefg ";
return 100;
}
------解决方案--------------------
int GetString( char *pc )//这种写法的问题是,pc是main中pi的副本
{
pc = "abcdefg "; //所以这里对pc的修改并不会修改到main中pi
return 100;
}
------解决方案--------------------
GetString( pi );
cout < < pi < < endl;
这里 pi 是指向char类型的指针变量啊,是个32位值,而且你没初始化pi,pi是个野指针,lz代码大大有问题
------解决方案--------------------
按值传递与按引用传递参数的问题
------解决方案--------------------
前面都给了解答了
要么指向指针的指针,要么传引用