我需要在一個聲明無符號的字符指針裏面有什麼偷看,我減少了我的問題,這個簡單的例子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'。 –