如何将char赋给const char *

问题描述 投票:1回答:4

如何在C中为char char *分配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的第一个元素?

c++ arrays char
4个回答
2
投票

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

你不能,因为cp是指向const 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';

0
投票

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

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

你可以用你现在拥有的代码进行演员表,但抛弃常量通常是一个坏主意(tm):

const char* cp;
unsigned maxlen = 20;

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

0
投票

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

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

我知道缺少空终止。我尝试使用strncpy但它不适用于char。

非常感谢您的建议。


-3
投票

如何将char赋值给const char *

  const char* cp;
  char p = 'U';
  cp = &p;
© www.soinside.com 2019 - 2024. All rights reserved.