C++ return 数组,不会调用
来源:百度知道 编辑:UC知道 时间:2024/05/17 01:11:24
C++里,有这样的数组,不知道如何调用。
CString* Config(){
CString strKeyName[3]={"Server","Post","tmp"};
return strKeyName;
}
这在同一类里,这样调用Config()[0]出错!什么不像JAVA那样?急呀。
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
析构了
静态变量