gpt4 book ai didi

c - 将整数数组传递给需要 C 中字符的函数

转载 作者:行者123 更新时间:2023-11-30 15:50:27 25 4
gpt4 key购买 nike

如何将无符号整数缓冲区传递给需要无符号字符缓冲区的函数?该函数将操作并更新缓冲区。接下来是我想要实现的伪代码。

unsigned int* inputBuffer = (unsigned int*)malloc(bufferSize);

function(inputBuffer); <- How to perform this correctly?

bool function(unsigned char *buffer)
{
...operate and update values of buffer
}

最佳答案

这取决于函数的作用。如果它对缓冲区中的字节进行操作(例如 memcpymemcmp 等),则只需转换指针即可:

function((unsigned char *)inputBuffer);

如果函数对缓冲区中的元素(整数)进行操作,那么您必须将整个内容复制到临时缓冲区中:

size_t nelems = bufferSize / sizeof(unsigned int);
unsigned char *temp = malloc(nelems);
if (temp == NULL)
// handle error

for (size_t i=0; i < nelems; i++)
temp[i] = (unsigned char)(inputBuffer[i]);
function(temp);

// copy results back into inputBuffer
free(temp);

但是,如果您发现需要执行类似的操作,那么您的程序中可能存在设计缺陷。除非您使用的是设计不佳的库,否则您根本不必这样做。

关于c - 将整数数组传递给需要 C 中字符的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15743276/

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