C++错误:初始化时无法将'char(*)[63]'转换为'char*'

Eri*_*sum 2 c c++ pointers char char-pointer

我似乎比我原先想象的更像是C++中的菜鸟.就我对C/C++的了解而言,这应该有效.我定义了一个字符数组,然后尝试指定一个开头的指针......我做错了什么?

// Create character array
char str[] = "t xtd 02 1CF00400 08 11 22 33 44 55 66 77 88 0   0 1234.567890";
// Assign pointer to beginning of array
char* p = &str;
Run Code Online (Sandbox Code Playgroud)

chr*_*ris 10

类型strchar[63].作为参考,请注意字符串文字本身的类型const char[63]不是const char *.你取这个地址,它给你一个指针char[63],或char (*)[63].然后尝试将其分配给a char *.

你应该做的是不取地址,让数组衰减成指针:

char *p = str;
Run Code Online (Sandbox Code Playgroud)

但是,你真正应该做的是使用std::string.

  • @EricFossum,它需要文字,这是一个常量字符数组,**将它们复制到一个非常量字符数组中(这是好的,因为它们被复制了),然后你用你的指针.我觉得有必要明确地说文字不是指针,它是一个数组,因为很多人都不知道(正如我从10k +代表那里看到的那样,当问到这个问题几个月时,他们给出了错误的答案前). (2认同)

Dan*_*her 5

您可以简单地省略地址运算符,

char *p = str;
Run Code Online (Sandbox Code Playgroud)

有效,数组会自动衰减为指向该上下文中第一个元素的指针。或者,如果你愿意的话,可以明确地进行强制转换,但这将是一种令人厌恶的行为。