gpt4 book ai didi

无法使用 C 语言将 'void*' 类型转换为 'double*' 或 'float*'

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

很抱歉,如果这个问题已经在某处找到了解决方案,但我发现的所有类似问题的答案都没有帮助我。

void imprimePilhaDouble (void *vetor, int tam)
{
int i;
double *vetorDouble;

vetorDouble = (double*) vetor;

for (i = 0; i < tam; ++i)
{
printf("%e\t", *((double*) vetorDouble[i]));
}
printf("\n");
}

void imprimePilhaFloat (void *vetor, int tam)
{
int i;
float *vetorFloat;

vetorFloat = (float*) vetor;

for (i = 0; i < tam; ++i)
{
printf("%f\t", *((float*) vetorFloat[i]));
}
printf("\n");
}

上面的代码在编译时返回这些错误:

In function 'imprimePilhaDouble'
erro: cannot convert to a pointer type
In function 'imprimePilhaFloat'
erro: cannot convert to a pointer type

对于 printf("%e\t", *((double*) vetorDouble[i]));printf("%f\t", *( (float*) vetorFloat[i])); 分别。有什么办法可以阻止这些错误吗?我制作了另一个似乎可以正常工作的类似功能:

void imprimePilhaInteiro (void *vetor, int tam)
{
int i, *vetorInt;

vetorInt = (int*) vetor;

for (i = 0; i < tam; ++i)
{
printf("%d\t", *((int*) vetorInt[i]));
}
printf("\n");
}

最佳答案

问题是这一行:

printf("%e\t", *((double*) vetorDouble[i]));

尝试将 double 转换为 double *。您不能将浮点值转换为指针,因此您会收到报告的错误。您的 float 函数也会发生同样的事情。

当您将 int 转换为 int * 时,这不会导致错误,但几乎是无稽之谈。

你想做什么?

关于无法使用 C 语言将 'void*' 类型转换为 'double*' 或 'float*',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30316052/

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