C程序编写不正确

时间:2017-01-19 19:56:01

标签: c arrays pointers

我的C应用程序有点问题;请帮我解决问题:

#include <stdio.h>

float t[5];
int i;
float *p;

*p=t;

int main (void)
{

    for (i=0;i<=4;i++)
    {
        printf("t[%d]",i);
        scanf("%f",&t[i]);
    }

    for (i=0;i<=4;i++)
    {
        printf("t[%d]=%f \n",i,*(p+i));
    }

    return 0;
}

当我编译这个程序时,编译器给了我这个问题:

  

[警告]从不兼容的指针类型初始化

这意味着什么?如何修改我的代码以便编译并正确运行?

3 个答案:

答案 0 :(得分:6)

你不能在函数之外使用某些代码,并希望它以某种顺序执行。

float t[5];

float *p;
*p=t; // illegal, you probably meant p=t; anyway

float *p = t; // fine

int main (void) {}

答案 1 :(得分:1)

这样做

float t[5];
float *p;
*p=t;

不会编译

  

错误:从类型中指定类型“float”时出现不兼容的类型   'float *'

改为:

float t[5];
int i;
float* p = t;

答案 2 :(得分:0)

更正评论

#include <stdio.h>

float t[5];
int i;
float *p;

*p=t; //here use p=t as *p will dereference it and t is already a pointer type in this assignment both will mismatch

int main (void)
{

for (i=0;i<=4;i++)
{
    printf("t[%d]",i);
    scanf("%f",&t[i]);
}

for (i=0;i<=4;i++)
{
    printf("t[%d]=%f \n",i,*(p+i));
}

return 0;
}