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

时间:2012-11-04 16:36:30

标签: 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;

3 个答案:

答案 0 :(得分:10)

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

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

char *p = str;

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

答案 1 :(得分:4)

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

char *p = str;

工作,数组自动衰减成指向该上下文中第一个元素的指针。或者,如果你愿意,明确施放,但这将是一种憎恶。

答案 2 :(得分:0)

 char* p = str;

&符号是多余的。普通数组名称只表示它的起始地址。