我需要在一个声明无符号的字符指针里面有什么偷看,我减少了我的问题,这个简单的例子COUT derefernced(无符号字符)的指针,让我意想不到的效果
#include<iostream>
int main (int argc, char *argv[])
{
unsigned char * buffer = new unsigned char;
*buffer = 8;
std::cout << "buffer = " << (unsigned char) (*buffer) << std::endl;
}
我期待这个输出:缓冲区= 8
,但我得到 缓冲=
空白,这驱使我坚果,甚至没有任何价值!
如何我其实和它打交道:
#include<iostream>
typedef unsigned char uint8_t;
int main (int argc, char *argv[])
{
uint8_t * buffer = new uint8_t ;
*buffer = 8;
std::cout << "buffer = " << (int) (*buffer) << std::endl;
}
我使用NS3这个例子中,缓冲构建了一个字节的有效载荷数据包,而我需要它是一个指针。 这就是为什么我实际上将我的问题与“C++”一起标记为“C”,因为问题的核心也在C中担心。但是我发现自己被拒绝投票支持!我知道“cout”和“new”是C++文字,但它与问题无关!
由于没有与所有的编码问题,我的问题就是什么是无符号的字符那么,如果它的内容与COUT一个普通字符!!!!!
我说我期待它是buffer = 8
,因为无符号字符是一个字节的整数。
谢谢你们,因为你让我注意到cout正在处理它,就好像它是一个普通的字符,尽管它对我来说是预期的。
8是第8个字符,而不是字符8 – TemplateRex
@mahmoud你不是'无符号字符'指针。修正标题。 – LogicStuff
@LogicStuff:是的。 '* buffer'是一个'unsigned char','unsigned char'(* buffer)'绝对是一个'unsigned char'。 –