指針有什麼用處unsigned char
?我曾在很多地方看到過,指針被類型轉換爲指向unsinged char
的指針爲什麼我們要這樣做?何時使用無符號字符指針
我們收到一個指向int
的指針,然後將其轉換爲unsigned char*
。但是如果我們嘗試使用cout在該數組中打印元素,它不會打印任何內容。爲什麼?我不明白。我是新來的C++。
編輯下面的代碼示例
int Stash::add(void* element)
{
if(next >= quantity)
// Enough space left?
inflate(increment);
// Copy element into storage, starting at next empty space:
int startBytes = next * size;
unsigned char* e = (unsigned char*)element;
for(int i = 0; i < size; i++)
storage[startBytes + i] = e[i];
next++;
return(next - 1); // Index number
}
當轉換爲字符指針時,第一個字節可能爲零,這與字符串終止符相同,因此不會打印任何內容。如果你能展示你真正做的事情,比如發佈一些代碼,它將會有所幫助。請製作[SSCCE](http://sscce.org/)並添加到問題中。 –
但我認爲如果第一個字節爲零,實際上我試圖打印所有的四個字節,但它不打印任何東西會丟失信息。 –
你的問題似乎更多關於「爲什麼」而不是「什麼時候」。通常,'unsigned char *'被用作一個字節級的訪問方法,以便進入一個更正式類型的變量或內存地址。它具有許多優點,其中包括免除嚴格的別名規則和標準保證與您輸入的任何地址的一致性。 C++新手不應該讓這個問題變得困難,因爲如果你對C程序有相當的熟悉程度,那麼我認爲這是一個難以理解的挑戰。也許你有一些代碼和背後的想法你有問題嗎? – WhozCraig