因为是想返回一个字符串地址,应该用char* 定义。
先看看我的实现代码
using namespace std;
char* jumpspace(char* s,int len)//参数分别是待跳过空格的字符串和该字符串的长度
{
int i = 0;
char* p = new char[len]; //用动态内存分配创建新字符串接收跳过空格后的字符串
while(*s !='\0')
{
if(*s!=' ')
{
p[i] = *s;
i++;
}
s++;
}
p[i] = '\0';//最后不要忘了在末尾添加结束标志
return p;//返回p的地址
}
注意这里的原字符数组并没有被改变,而是新开辟了份空间给p,所以会增加一定的空间复杂度。
在使用完这个函数后应该及时释放函数
void destroyjumpspace(char* p)
{
delete[] p;
}
这里我特别提一嘴,为什么要使用动态内存分配呢,因为如果不这样做,字符数组在函数结束后将自动销毁,这样的话返回的就是一个未定义地址了,可能会导致未定义的行为,所以这一步非常重要 !