使用和不使用功能有什么区别?

时间:2015-04-12 12:33:01

标签: c++ arrays

当我尝试创建用于连接字符串的函数时,我已经看到了一个问题,并且程序已经成功构建,没有编译时错误,但是当它运行时,我的程序崩溃了。但是,当我将代码直接写入int main()时,程序运行顺利,没有错误 有没有人能解释一下?

导致程序崩溃的代码是:

...
inline char *concatStr(char *target, char *source){
  return copyStr(_endOfStr(source), source);
}
int main(){
  char hello[MAX] = "Hello ";
  char world[MAX] = "World!!\n";
  concatStr(hello, world); //create "Hello World!!\n" by adding "World!!\n" to end of "Hello "
  cout << hello; //I want display "Hello World!!"
  return EXIT_SUCCESS;
}

替换代码是:

...
int main(){
  char hello[MAX] = "Hello ";
  char world[MAX] = "World!!\n";
  copyStr(_endOfStr(hello), world);
  cout << hello;
  return EXIT_SUCCESS;
}

功能char *copyStr(char *target, char *source)覆盖target并返回指向目标中null的指针

函数char *_endOfStr(char *str)返回在str

中指向null的指针

2 个答案:

答案 0 :(得分:2)

您的崩溃代码上有拼写错误:

return copyStr(_endOfStr(source), source);

应该是

return copyStr(_endOfStr(target), source);

我现在手头没有C ++编译器,但是应该修复它。

答案 1 :(得分:-1)

由于使用c ++而不是C,因此请使用string而不是char *。

您的代码看起来应该像这样:

#include <string>
...
int main(){
  std::string hello = "Hello ";
  std::string world = "World!!\n";
  std::string helloWorld = hello + world;
  cout << helloWorld;
  return EXIT_SUCCESS;
}