私の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'は' float'です。 't'は' float * 'に縮退します。そのため、コンパイラが不平を言うのです。 –
'float t [5];'の場合、 'for = 'を使用するのではなく、' for 'ループを' for(i = 0; i <5; i ++) 1'。理想的には、ほとんどの場合、 'for(int i = 0; i <5; i ++)'を使用するのが理想的です。これはもっと文体的です。そのようなループコントロールを宣言しない理由がありますループが完了した後)。 –
また、 'i'と' p'(特にこの例では 't'も)はローカル変数でなければなりません。可能な場合は避けてください。 –