C 注:预计为';浮动*';但参数的类型是';int*';

C 注:预计为';浮动*';但参数的类型是';int*';,c,types,floating-point,int,C,Types,Floating Point,Int,我有个警告 注意:应为“float*”,但参数的类型为“int*” 我的节目是 #include <stdio.h> //header file void foo(float *); int main() { int i = 10, *p = &i; foo(&i); } void foo(float *p) { printf("%f\n", *p); } #包含//头文件 无效foo(浮动*); int main() { int i=

我有个警告 注意:应为“float*”,但参数的类型为“int*” 我的节目是

#include <stdio.h> //header file

void foo(float *);

int main()
{
    int i = 10, *p = &i;
    foo(&i);
}

void foo(float *p)
{
    printf("%f\n", *p);
}
#包含//头文件
无效foo(浮动*);
int main()
{
int i=10,*p=&i;
foo&i;
}
无效foo(浮动*p)
{
printf(“%f\n”,*p);
}
产量为0.000 000
为什么?

正如警告所说,您正在向
foo()
传递指向
int
的指针,但
foo()
需要指向
float
的指针。因此,或者您将
i
声明为
float
,或者将
foo()
的参数更改为
int*
,foo函数需要的参数类型为
int*
(指向整数的指针),而不是
float*
(指向浮点的指针)。将数据类型
float
更改为
int
,并将
%d“
替换为
%f”
,以消除警告。

警告文本不是已经很明显了吗?您不理解的警告是什么?