如何将值传递给指针参数C ++

时间:2015-08-16 02:39:44

标签: c++ pointers reference

这是示例代码

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

提前致谢

3 个答案:

答案 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)

memcpy对我也有用。然而,对于C ++,WhozCraig的回答更合适和整洁。