C 错误:在初始化中无法将“ char(*)[63]”转换为“ char*”

C++ error: cannot convert ‘char (*)[63]’ to ‘char*’ in initialization

本文关键字:char 错误 转换 初始化      更新时间:2023-10-16

我似乎比我最初想象的更像是noob。就我对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;

str的类型是char[63]。对于参考,请注意,字符串本身的类型是const char[63],而不是const char *。您可以使用该地址,这为您提供了char[63]char (*)[63]的指针。然后,您尝试将其分配给char *

您应该做的不是接地址,然后将数组腐烂成指针:

char *p = str;

不过,您应该真正做的是使用std::string

您只需省略地址运算符,

char *p = str;

有效,数组会在此上下文中自动腐烂到指针到第一个元素。或者,如果您愿意,明确施放,但这将是可憎的。

 char* p = str;

&and and and是多余的。一个普通的数组名称仅表示其开始的地址。