0
我試圖將原始代碼簡化爲一個簡單的測試示例,它複製了我所遇到的問題。我事先對這個簡單的問題表示歉意。我是一個C++初學者。使用memcpy結果輸出0應對緩衝區?
因此,移動的實際問題..爲什麼我得到0作爲輸出?對於我的這個例子和我的理解,函數不應該被修改,除了它們中的數值(如果它是必需的)(意思是我錯了:)。
非常感謝提前。
static unsigned short buffer[5];
void settingMemory()
{
memset(buffer, 0, sizeof(buffer));
}
void copingMemory(const unsigned short *pixels)
{
memcpy(&buffer[5], pixels, 5*sizeof(unsigned short));
}
void printingMemory()
{
unsigned short *test = buffer;
std::cout << *test << std::endl;
std::cout << *test++ << std::endl;
std::cout << *test++ << std::endl;
std::cout << *test++ << std::endl;
std::cout << *test++ << std::endl;
std::cout << *test++ << std::endl;
}
int main(int argc, char* argv[])
{
settingMemory();
unsigned short test[5];
test[0] = 5;
test[1] = 55;
test[2] = 555;
test[3] = 5555;
test[4] = 55555;
copingMemory(test);
printingMemory();
}
我的輸出是:
0
0
0
0
0
0
您正在複製和打印傳入數組的末尾 –
使用std :: vector。如果您最後需要複製,使用std :: copy而不是memcopy。你覺得'&buffer [5]'是什麼? –
謝謝邁克爾的快速回應。 爲了我的理解,是否有可能給我一個工作的例子? – user3270371