我对C中的这个主题pointers
很新。我有一个代码如下。
此代码的输出为0.000000,但我不明白为什么会这样做?
void foo(float *);
int main()
{
int i=10,*p=&i;
foo(&i);
}
void foo(float *p)
{
printf("%f",*p);
答案 0 :(得分:0)
首先检查此site以了解指针行为。
在您的代码中,您声明了float类型参数,但传递整数值。
试试这个:
#include <stdio.h>
void foo(int *p)
{
printf("%d",*p);
}
int main()
{
int i=10,*p=&i;
foo(&i);
return 0;
}
答案 1 :(得分:0)
它给出了以下警告。
test.c:6:2:警告:从不兼容的指针类型[默认启用]传递'foo'的参数1
因为,您将地址传递给foo函数,但期望的参数是float *。 然后,您将p指针定义为整数类型。
变量p不指向i。 但是在foo函数调用中,没有传递地址。
所以,它发出警告并且0.0000。
所以,改变你的代码如下。
void foo(float *);
int main()
{
flat i=10,*p=&i; //Change the data type
foo(&i);
}
void foo(float *p)
{
printf("%f",*p);
}
现在输出
10.0000