C++ return 数组,不会调用

来源:百度知道 编辑:UC知道 时间:2024/05/17 01:11:24
C++里,有这样的数组,不知道如何调用。
CString* Config(){
CString strKeyName[3]={"Server","Post","tmp"};
return strKeyName;
}

这在同一类里,这样调用Config()[0]出错!什么不像JAVA那样?急呀。

strDeyName在这里是config函数的局部变量,在config函数结束后就销毁了,你return它当然出错.
正确的方法是把strKeyName声明为config的外部变量,并作为参数传给Config函数

void Config(CString *str)
{
str[0]="Server";
str[1]="Post";
str[2]="tmp";
}

CString strKeyName[3];
Config(strKeyName);

CString 是 class, 不是变量类型。

你可以用 char strKeyName[3][8]={"Server","Post","tmp"};
通过指针参数传出去。

你也说了这是一个类,它没有特殊声明就是一个私有的,你只能通过一个变量才能调用这个函数!!
Config x;(通过这个x)
x.strKeyName[0];

静态变量的问题吧。。。
数据存储在栈里,栈数据在函数完成后自动释放,所以即使返回指针也是不可以访问到的数据,可以申请内存,或是全局变量,在不就是静态变量static

析构了

静态变量