我的C程序有點問題;請幫我達成解決方案: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;
}
當我編譯該程序的編譯器給了我這個問題:
[Warning] initialization from incompatible pointer type
這是什麼意思,我怎麼能修改我的代碼,以便它可以編譯和運行是否正確?
該代碼不能編譯; '* p = t;'不能出現在函數之外。你可能有'float * p = t;' - 這是合法的。 '* p'是一個'浮動'; 't'退化爲'float *';這就是編譯器抱怨的原因。 –
另請注意,對於'float t [5];',通常將'for'循環寫爲'for(i = 0; i <5; i ++)'而不是使用'<='和'dimension minus一'。理想情況下,大多數情況下你會使用'for(int i = 0; i <5; i ++) - 這更具風格,並且有理由不聲明這樣的循環控制(例如需要訪問值循環完成後)。 –
另外,'i'和'p'(特別是,在這個例子中,'t'也是)應該是局部變量。僅在必要時使用全局變量 - 儘可能避免使用全局變量。 –