为无符号字符* 分配一个数字
Assigning a unsigned char* a number
>我正在使用一个无符号字符*来存储最多200左右的信息, 我正在使用字符指针,因为以后想删除,例如
unsigned char* hello = new unsigned char;
delete hello;
但是当我尝试为它分配一个值时,例如hello = 54
它给出了错误a value of type "int" cannot be assigned to an entity of type "unsigned char*"
帮自己一个忙,如果是整数,就用int
。否则,一旦遇到期望char
对象实际上是字符(例如,格式化流 IO(的函数重载,它就会变得混乱:
int hello = 52;
如果确实需要节省一些内存,可以直接使用unsigned char
:
unsigned char hello = 52;
无论出于何种原因,如果希望将对象的生存期限制在较小的范围内,则可以引入另一个级别的嵌套:
{
unsigned char hello = 52;
} // no need to delete here, because the object is destroyed automatically
请注意,当您声明一个指针(现在可能是 64 位宽(并动态分配内存以在其他地方保存字节时,您实际上会使用更多内存。
如果确实希望将对象的生存期延长到当前范围之外,则可以改用智能指针,以防止内存泄漏或双重释放等问题。
std::unique_ptr<char> hello = std::make_unique<char>(52);
但请注意,这通常很麻烦,而且通常根本不需要,尤其是对于这么小的物体。只需声明一个局部变量,根据需要复制它,然后完成它。
除此之外,您需要取消引用指针以访问指针指向的对象:
unsigned char * p = new unsigned char;
*p = 52;
delete p;
相关文章:
- 如何(从固定列表中)选择一个数字序列,该序列将与目标数字相加
- 如何获取一个数字的前3位
- 以C++输出一个数字三角形
- 反转一个数字程序不起作用,为什么?
- 如何让用户在 c++ 中选择一个数字
- 输出一个数字,该数字可能是三种类型之一
- C++在不使用pow或循环的情况下计算一个数字的幂
- 我必须更改我的数字最后一个数字和第一个数字,但不要使用仅带有整数或循环的函数.例如从 12345 到 52341
- 找到所有与自己求和的数字X的快速方法,去掉一个数字得到N
- C++[递归]将一个数字写成2的升序之和
- 试图找到一个数字的平方根,但代码不起作用。C++
- 我没有得到一个数字作为输出,而是一个表情符号
- 我的代码应该接受一个数字,并返回字母等级或"Grade is not valid"但 else 语句不起作用
- 将一个数字拆分为多个数字,每个数字只有一个有效位
- 你怎么编码,如果x不等于一个数字,程序就会退出
- 如何将整数数组相乘得到一个数字?
- 为无符号字符* 分配一个数字
- 如何以更有效的方式检查一个数字是否是素数?
- C++显示两个区间之间的数字的程序检查一个数字是否可以表示为两个素数的总和
- 字符串和双精度的麻烦,等值后再得到一个数字