全局變數c語言
Ⅰ c語言全局變數的定義是什麼
在所有函數外部定義的變數稱為全局變數(Global Variable),它的作用域默認是整個程序,也就是所有的源文件,包括 .c 和 .h 文件。
Ⅱ C語言中的全局變數和局部變數分別是指什麼
解答問題前,先說明一下,當全局變數和局部變數同名時,要看當前代碼所處的作用域,默認使用當前作用域內的同名局部變數。
分析你所提供的代碼:
#include
int a = 4;
//全局變數
int f(int n)
{
int t = 0;
static int a = 5;
//局部靜態變數
if( n%2 )
{
int a = 6;
// if作用域內局部變數
t += a++;
// 此處的a是指if作用域內的局部變數,該變數在作用
// 域結束後,生存周期結束。
}
else
{
int a = 7; // else作用域內局部變數
t += a++;
// 此處的a是指else作用域內的局部變數
// 作用域結束後,生存周期結束
}
return t+a++;
// 此外的a是指f函數作用域內的靜態局部變數,
// 每次f函數調用return後,此靜態局部變數a自增1
}
int main ( void )
{
int s=a, i=0;
// 根據作用域,此處的a是指全局變數,所以s初始值為4
for(;i<2;i++) s+=f(i);
printf("%d\n",s);
return 0;
}根據以上,分析運行流程:
由上可知,s初始值為4;
當i=0時,第一次循環,調用f()函數,由於0%2為0,會進入else後代碼,此時t=0+7=7,調用f()函數的return時,會返回7+5=12,同時f()函數的靜態局部變數a由5變為6(下次調用生效),s=4+12=16。
當i=1時,第二次循環,調用f()函數,由於1%2為1,會進入if後代碼,此時t=0+6=6,調用f()函數的return時,會返回6+6=12,同時f()函數的靜態局部變數a由6變為7(下次調用生效),s=16+12=28。
當i=2時,循環終止,列印s值為28。
關於最後的問題,是因為f()函數中if後面的變數a作用域只限制在if後的花括弧內,代碼退出該作用域後,該變數生存周期結束而被釋放,return中使用的a是f()函數中定義的靜態局部變數a,所以,不管前者如何賦值,對return中的a沒有影響。
Ⅲ c語言怎樣聲明和定義全局變數
定義在函數體外部的變數叫全局變數,
要定義全局變數你只要把變數定義在
所有函數外部即可。
要注意的是,全局變數只對它定義位
置以下的函數可見。
#include<stdio.h>
voidf1();
voidf2();
inty=100;
intmain()
{
printf("%d ",y);
//printf("%d ",x);這不可以讀x,x對main()不可見
f1();
f2();
return0;
}
intx;
voidf1()
{
x=200;
}
voidf2()
{
printf("%d ",x);
printf("%d ",y);
}
Ⅳ c語言,如何定義數組為全局變數
在C語言中,全局變數和函數聲明及定義並列,也就是說,聲明在最外層作用域的變數即為全局變
如在如下程序中
inti;
intmain()
{
inti_=i;
i=9;
return0;
}
int i就是一個全局變數,故在main函數中可以調用或修改i的值
所以,定義數組也和普通全局變數的方法相同,如
charstr[10];
intmain()
{
str[0]='a';
str[1]='