繁体   English   中英

如何将char分配给const char *

[英]how to assign char to const char*

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

您不能,因为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';

您不能以安全的方式这样做,更好的主意是:

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

可以通过对现有代码进行强制转换做到这一点,但是丢掉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。

非常感谢您的建议。

如何将字符分配给const char *

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM