我试图将原始代码简化为一个简单的测试示例,该示例复制了我遇到的问题。我事先为这个简单的问题道歉..我是C ++的初学者。
所以转移实际的问题..为什么我得到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
答案 0 :(得分:0)
行memcpy(&buffer[5], pixels, 5*sizeof(unsigned short));
复制到缓冲区的第6个元素的开头(即第一个元素/外部/缓冲区。用memcpy(&buffer[0], pixels, 5*sizeof(unsigned short));
替换它,所以你复制它改为 1st 元素。