藍森林首頁 | 返回主頁 | 本站地圖 | 站內搜索 | 聯繫信箱 |
 您目前的位置:首頁 > 自由軟件 > 技術交流 > 應用編程


    

藍森林 http://www.lslnet.com 2006年6月6日 10:18


auto和static變量的區別,我不太清楚

[code]void varfunction()
{
int var=0;
static int static_var =0;
printf("var equal %d \n",var);
printf("static var equal %d \n",static_var);
printf("\n");
var++;
static_var++;
}
main()
{
int i;
for (i=0;i<2;i++)
  varfunction();
} [/code]

執行如下:
[code]var equal 0
static var equal 0

var equal 0
static var equal 1 [/code]

書上說未聲明的變量都屬於auto型的,那麼我以前編程中的變量都是auto型的了。在執行如var++後變量值都是依次+1的。可在上例中為什麼var的值在執行後卻保持不變呢?

auto和static變量的區別,我不太清楚

因為第二個var已不是第一個var了,是新var。
static_var兩次都是同一個。至於你說的「在執行如var++後變量值都是依次+1的」,肯定是global varibale了,它不是定義在某個function中的。

auto和static變量的區別,我不太清楚

[code]fact(j)
int j;
{
int sum;
if (j==0)
  sum=1;
else
  sum=j*fact(j-1);
return(sum);
}

main ()
{
int i,num,he;
he=0;
printf("the number is ==>;");
scanf("%d",&num);
for(i=0;i<num+1;i++)
  {
  printf("%d! = %d\n",i,fact(i));
  he +=fact(i);
  }
printf("the summary is %d\n",he);
} [/code]

auto和static變量的區別,我不太清楚

後面的sum是auto 和第一個的var相同



Copyright © 1999-2000 LSLNET.COM. All rights reserved. 藍森林網站 版權所有。 E-mail : webmaster@lslnet.com