【问题标题】:how to create a char array in c++?如何在 C++ 中创建一个 char 数组?
【发布时间】:2015-05-04 04:40:19
【问题描述】:

我正在尝试创建一个指向 char 的指针并将其作为 char* 传递给函数。 这是我定义 char 数组的代码
似乎编译器无法识别字符串的结尾 因为函数显示没有显示正确的字符串

char myword[] = { 'H', 'e', 'l', 'l', 'o', '\0' }; 
char  str[] = {'M','i','k','e',' ','s','m','i','t','h','\0'};
char str2[] = "Dragic\0";
char* pname=&str[0];
char* pteam=&str2[0];
Display(myword);

【问题讨论】:

  • 编译时包含所有警告和调试信息 (g++ -Wall -Wextra -g)。 使用调试器 (gdb) 和valgrind(如果可用)。了解new
  • 而且由于您没有显示Display 的代码,所以您的问题毫无意义。
  • 你的 Display 函数是如何定义的?
  • 请显示Display的定义。

标签: c++


【解决方案1】:

您的 Display() 函数中有错误。您发布的代码完全有效。您可以查看here

不管怎样,你为什么要这样声明这些数组呢?你可以这样做:

char myword[] = "Hello";
char str[] = "Mike Smith";
char str2[] = "Dragic";

char* pname = &str[0];
char* pteam = &str2[0];

在常量字符串文字的情况下,会自动附加空终止符。那么:

printf("%s\n", myword);
printf("%s\n", str);
printf("%s\n", str2);
printf("%s\n", pname);
printf("%s\n", pteam);

输出:

Hello
Mike Smith
Dragic
Mike Smith
Dragic

您可以找到工作示例here

【讨论】:

    【解决方案2】:

    如果你只需要一个字符串,不要使用字符数组,使用std::string。如果需要数组,请使用std::vectorstd::array

    如果你真的必须使用裸数组(堆分配)和指针,至少用RAII封装。

    【讨论】:

    • 如果是固定数组,在本地堆栈上创建为对象,我认为使用RAII 没有意义。这里没有任何东西会导致任何形式的内存泄漏。
    猜你喜欢
    • 1970-01-01
    • 2015-12-31
    • 1970-01-01
    • 1970-01-01
    • 2012-03-10
    • 1970-01-01
    • 2014-08-06
    • 1970-01-01
    • 2012-10-22
    相关资源
    最近更新 更多