我的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;
}
当我编译这个程序时,编译器给了我这个问题:
[警告]从不兼容的指针类型初始化
这意味着什么?如何修改我的代码以便编译并正确运行?
答案 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;
}