Я, кажется, больше нуб в 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;
Амперсанд избыточен. Простое имя массива просто обозначает адрес его начала.