如何在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的第一个元素?
如何将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;
你可以用你现在拥有的代码进行演员表,但抛弃常量通常是一个坏主意(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;