概述
#include<iostream>
using namespace std;
/* 写一个函数,对于字符串类型数据取其长度的一半
* 对于浮点数类型数据取其值的二分之一
*/
float half(float a)
{
return a / 2;
}
/*
string half(string s)
{
int n = s.length() / 2;
string str;
for (int i = 0; i < n; i++)
{
str[i] = s[i];
}
return str;//返回str,相当于返回一个指针。str指向string类型的变量。
}
*/
// string类型的局部变量不能通过变量名作为函数返回值返回
// 因为局部变量是存放在栈区,栈区的数据在函数执行后会自动释放。从而string类型的局部变量也就会被释放。
// str虽然作为指针被返回了,但是它所指向的区域中的内容也已经被释放了。
// 解决方法是:通过new开辟空间,将指针所指向的数据放到堆区
string half(string s)
{
int n = s.length() / 2;
char* str = new char[n+1];
for (int i= 0; i < n; i++)
{
str[i] = s[i];
}
str[n] = '