Ich habe den folgenden Code-Schnipsel:C - Setzen Sie den Wert eines statischen Variablen, wenn nicht gesetzt
#include<stdio.h>
void read(int a[ ],int n)
{
static int p=n;
if(n!=0)
{
printf("enter element %d: ",p-n);
scanf("%d",&a[p-n]);
read(a,n-1);
}
}
int main()
{
int a[10],n;
printf("enter n: ");
scanf("%d",&n);
read(a,n);
}
Ich halte die error: initializer element is not constant
bekommen. Ist die Konstante nicht konstant, wenn die Funktion kompiliert wird?
Bearbeiten: Problem: Wie den Wert einer statischen Variablen (wenn es nicht festgelegt ist) innerhalb einer Funktion festlegen?
Es ist, weil Sie eine statische Variable mit einer anderen Variablen nicht initialisieren können, nur konstante Werte, die zur Kompilierzeit bestimmt werden können. – ddz
Die Antwort ist nein. Es ist nicht konstant, ist eine Variable, die an eine Funktion übergeben wird. In C können Sie eine Kompilierzeitkonstante verwenden, indem Sie '#define n 10' verwenden. Es gibt auch mehrere Post zu diesem Argument, siehe zum Beispiel http://stackoverflow.com/questions/3025050/error-initializer-element-is-not-constant-when-trying-to-initialize-variable-w –
' statisch int p = n; '->' statisch int p; if (! p) p = n; ' – BLUEPIXY