如何将char分配给const char*

how to assign char to const char*

本文关键字:char const 分配      更新时间:2023-10-16

我如何将char分配给c?

中的const char*
const char* cp;
unsigned maxlen = 20;
cp = new char[maxlen];
char p = 'U';
cp = p; 

我遇到了错误:

Error: invalid conversion from 'char' to 'const char*

如何将char p分配给数组CP的第一个元素?

如何将char p分配给数组CP的第一个元素?

您不能,因为cpconst char的指针。const可防止初始化后的任何突变。

如果您真的想更改cp的元素,请删除const

char* cp;
unsigned maxlen = 20;
cp = new char[maxlen];
char p = 'U';
cp[0] = p; 

请注意,以上是可怕的C 。您应该将std::vector用于动态数组(或固定大小数组的std::array)。示例:

std::vector<char> cp;
cp.resize(20);
cp[0] = 'U';

您不能以安全的方式这样做,一个更好的想法是:

char * nonConstPtr = new char[len];
*nonConstPtr = 'a';
nonConstPtr[1] = 0;
char const * constPtr = nonConstPtr;

you 可以用您现在拥有的代码的铸件来做到这一点,但是扔掉const-ness通常是一个坏主意(tm):

const char* cp;
unsigned maxlen = 20;
cp = new char[maxlen];
char p = 'U';
char * ptr = (char*)cp;
memset(ptr, 0, maxlen);
*ptr = p;

这是可以接受的还是错误的?

unsigned maxlen = 20;
char *cp;
cp = (char*) malloc(sizeof(char) * maxlen);
char c = 'P';
*cp = c;

我知道缺失了无效的终止。我尝试使用strncpy,但不适用于char。

非常感谢您的建议。

如何将char分配给const char*

  const char* cp;
  char p = 'U';
  cp = &p;