我有下面的代碼片段:Ç - 設置一個靜態變量的值,如果取消設置
#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