这是示例代码
void test(void *outputData)
{
u8 *changeData;
changeData[1] = 'T';
changeData[2] = 'M';
}
void main()
{
u8* const buf = (u8*) malloc(36654);
test(buf);
}
所以我要做的是将changeata返回到buf
我在测试功能中试过这个,但似乎没有用
*outputData = *changeData
编辑:
我正在尝试访问我在测试函数中修改过的main函数的buf
提前致谢
答案 0 :(得分:3)
以下代码中的评论。代码中的错误或不明智的列表很多。诚然,由于你的问题帖子不完全清楚,这是一个最好的猜测方案,但可能接近你所寻求的。如果不是......
#include <iostream>
// not specified in your question code. assumed to come from somewhere
typedef unsigned char u8;
void test(void *outputData)
{
// C allows implicit casting from void*; C++ does not.
u8 *changeData = reinterpret_cast<u8*>(outputData);
// C and C++ both use zero-based indexing for arrays of data
changeData[0] = 'T';
changeData[1] = 'M';
changeData[2] = 0;
}
// void is not a standard supported return type from main()
int main()
{
// in C++, use operator new, not malloc, unless you have
// a solid reason to do otherwise (and you don't)
u8* const buf = new u8[3];
test(buf);
// display output
std::cout << buf << '\n';
// delete[] what you new[], delete what you new.
delete[] buf;
}
答案 1 :(得分:0)
您无法取消引用void指针。您需要将输入参数类型更改为u8*
。
答案 2 :(得分:0)