自定义函数怎么返回指针啊

C++语言 码拜 8年前 (2016-09-16) 1579次浏览
#include <windows.h>
#include "string"
using namespace std;
void main()
{
	string a = "123163jjj";
	cout << "测试:" << getleft(a,3) << "\n" << endl;
}
string * getleft(string zstr, int zlen)     //使用string类截取字符串左边
{
	string tem = zstr.substr(0, zlen);
	return &tem;
}

像上面这样写,为什么得不到正确的返回值啊,求指导

解决方案

10

以为函数getleft()执行完成后,tem就自动释放了,虽然你返回的是tem地址,但是这是无效的地址,所以你可能得不到正确的字符串。

60

试试这样:

#include <iostream>
#include <string>
using namespace std;
string *getleft(string zstr, int zlen);
void main()
{
	string a = "123163jjj";
	cout << "测试:" << *(getleft(a, 3)) << "\n" << endl;
}
string *getleft(string zstr, int zlen)     //使用string类截取字符串左边
{
	string *tem = new string(zstr.substr(0, zlen));
	return tem;
}

10

需要,有new出来的指针要delete释放掉,要多深入理解内存的知识

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明自定义函数怎么返回指针啊
喜欢 (0)
[1034331897@qq.com]
分享 (0)