gpt4 book ai didi

c - 从应用程序内修改函数参数(指针)

转载 作者:行者123 更新时间:2023-11-30 18:09:48 24 4
gpt4 key购买 nike

这是一个基于 Win32 的 C 代码的问题。在我的一个函数中,我有以下代码:

void SeparateStuff()
{
HGLOBAL hMem;
IStream* pStream;
Status result;
unsigned char* pBytes;
DWORD size;
FILE* fp;

if (hMem = GlobalAlloc(GMEM_MOVEABLE, 0))
{

if (CreateStreamOnHGlobal(hMem, FALSE, &pStream) == S_OK)
{
// save the buffer to a file
result = Scramble(pStream);
pStream->Release();

if (result == Ok)
{
if (pBytes = (unsigned char *) GlobalLock(hMem))
{
size = GlobalSize(hMem);
// pBytes has the buffer now
// in this case write it to a file
if(fp = fopen("c:\\SomeFile.bin", "wb"))
{
fwrite(pBytes, size, 1, fp);
fclose(fp);
}
}
}

}
else
{
printf("error CreateStreamOnHGlobal. Last err: %d\n", GetLastError());
return;
}
}
else
{
printf("error GlobalAlloc. Last err: %d\n", GetLastError());
return;
}
}

在这种情况下,unsigned char* 缓冲区将被保存到文件中。一切安好。现在,我需要修改此代码,以便返回 unsigned char*。像这样的东西:

void SeparateStuff(unsigned char* ReturnedBytes)

ReturnedBytes 将在函数内部修改。我尝试复制指针,我尝试复制指针内的数据。我尝试了很多不同的方法。无论我做什么,我要么在调用函数中得到垃圾,要么出现异常。调用函数(例如 main())还必须将一个 unsigned char* 传递给SeparateStuff()。

我该怎么做?

谢谢!

最佳答案

您可以使用以下语法之一:

unsigned char* SeparateStuff(); //Returns a pointer
void SeparateStuff(unsigned char** ppBuffer); //Pointer to the output buffer

或者在 C++ 中:

void SeparateStuff(unsigned char*& pBuffer) //Reference to the output buffer

关于c - 从应用程序内修改函数参数(指针),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/996051/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com