刚开始学习 C++ 并尝试使用以下代码创建一个简单的函数来执行子字符串:
char* substring(int start, int end, const char* target)
{
size_t length = strlen(target);
char result[(length + 1)];
int iterator = 0;
for(int i = start; i < length; i++)
{
if(i <= end)
{
result[iterator] = target[i];
iterator++;
}
}
result[iterator] = '\0';
cout << result << endl; // This give correct result "aya";
return result;
}
当我在 main 方法上使用这些函数时:
int main(int argc, char** argv) {
char some_text[] = "Saya Makan";
char* sub = substring(1, 3, some_text); // No string returned
cout << "Substring Result is: " << sub;
return 0;
}
它给出的输出是这样的:
aya
Substring Result is:
RUN SUCCESSFUL (total time: 44ms)
从结果中可以看出,我的函数只返回空字符串,尽管在返回之前有一行代码,“result”变量正确地回显了结果。请您向我解释一下我的函数内部发生了什么,我错过了什么吗?