2

在 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;
4

3 回答 3

10

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

您应该做的不是获取地址,而是让数组衰减为指针:

char *p = str;

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

于 2012-11-04T16:38:32.833 回答
5

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

char *p = str;

工作时,数组会自动衰减为指向该上下文中第一个元素的指针。或者,如果您愿意,可以明确地强制转换,但那将是可憎的。

于 2012-11-04T16:37:58.900 回答
1
 char* p = str;

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

于 2012-11-04T16:40:36.413 回答