gpt4 book ai didi

c - void * 作为函数参数

转载 作者:太空宇宙 更新时间:2023-11-04 00:57:32 25 4
gpt4 key购买 nike

我在使用 void * 时遇到问题。我应该如何将此 clean_buffer 函数用于 int 和 float 数组。

void clean_buffer( void *ptr, int n)
{
for( int i = 0; i < n; i++)
ptr[i]=0;
}
int main(void)
{
float *pf;
int *pi;

pf = (float *) malloc(10*sizeof(float));
pi = (int *)malloc(10*sizeof(int));


clean_buffer( (float *)pf, 10);
clean_buffer( (int *)pi, 10);

return 0;
}

最佳答案

void 是一个非值,您不能使用 *((void*) x) = v; 并使用 cast 来使用指向其他类型的指针危险,因为大小可能不同

但是,在你的情况下你设置为 0,所以你可以使用 memset 或替换 malloc my calloc 并且它是无用的有 clean_buffer :

int main(void)
{
float *pf;
int *pi;

pf = calloc(10, sizeof(float));
pi = calloc(10, sizeof(int));

return 0;
}

关于c - void * 作为函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54254580/

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