Ich habe ein kleines Problem in meiner C-Anwendung; Bitte helfen Sie mir, eine Lösung zu erreichen:C-Programm wurde nicht korrekt geschrieben
#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;
}
Wenn ich kompilieren dieses Programm der Compiler mir dieses Problem gibt:
[Warning] initialization from incompatible pointer type
Was bedeutet das und wie kann ich meinen Code ändern, damit es und läuft kompiliert korrekt?
Der Code wird nicht kompiliert; Das '* p = t;' kann nicht außerhalb einer Funktion erscheinen. Sie könnten 'float * p = t;' haben - das wäre legitim. '* p' ist ein' float'; 't' degeneriert zu einem' float * '; deshalb beschwert sich der Compiler. –
Beachten Sie auch, dass es für 'float t [5];' üblich ist, die For-Schleifen als 'für (i = 0; i <5; i ++)' zu schreiben, anstatt '<=' und 'Dimension minus ein'. Im Idealfall würden Sie 'for (int i = 0; i <5; i ++)' die meiste Zeit verwenden - das ist eher stilistisch, und es gibt Gründe, die Schleifensteuerung nicht so zu deklarieren (z. B. auf den Wert zugreifen zu müssen) nachdem die Schleife abgeschlossen ist). –
Auch sollten "i" und "p" (insbesondere und in diesem Beispiel auch "t") lokale Variablen sein. Verwenden Sie Globals nur bei Bedarf - vermeiden Sie sie wenn möglich. –