带有float指针参数的函数输出和输入作为int变量的地址

时间:2015-10-13 12:16:47

标签: c pointers

我对C中的这个主题pointers很新。我有一个代码如下。

此代码的输出为0.000000,但我不明白为什么会这样做?

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

    void foo(float *p)
    {
    printf("%f",*p);

2 个答案:

答案 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