我似乎比我原先想象的更像是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;
答案 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;
&符号是多余的。普通数组名称只表示它的起始地址。