我有下面的代码片段:Ç - 设置一个静态变量的值,如果取消设置
#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);
}
我不断收到error: initializer element is not constant
。 函数编译时不是n常量吗?
编辑: 问题:如何在函数中设置静态变量的值(如果没有设置)?
这是因为你不能用另一个变量初始化一个静态变量,只有在编译时才能确定的常量值。 – ddz
答案是否定的。它不是常量,是一个变量,传递给一个函数。在C中,通过使用'#define n 10'可以使编译时间保持不变。此外,这个参数有几个帖子,请参阅http://stackoverflow.com/questions/3025050/error-initializer-element-is-not-constant-when-trying-to-initialize-variable-w –
' static int p = n;' - >'static int p;如果(!p)p = n;' – BLUEPIXY