在 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;
在 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;
的类型str
是char[63]
。作为参考,请注意字符串文字本身的类型是const char[63]
,而不是const char *
。你取那个地址,它给你一个指向char[63]
, 或的指针char (*)[63]
。然后,您尝试将其分配给char *
.
您应该做的不是获取地址,而是让数组衰减为指针:
char *p = str;
但是,您真正应该做的是使用std::string
.
您可以简单地省略地址运算符,
char *p = str;
工作时,数组会自动衰减为指向该上下文中第一个元素的指针。或者,如果您愿意,可以明确地强制转换,但那将是可憎的。
char* p = str;
& 号是多余的。一个普通的数组名称只是表示它的开始地址。