變量的作用域
#include<stdio.h>
int f(int a) // 定義了變量a尊勿,a的作用域從這里開始
{
int b;//定義了變量b,b的作用域從這里開始
b=a+1;
return b;
}//a,b作用域結(jié)束
main()
{
int x=1,y;//x画舌,y的作用域只能在這個(gè)main函數(shù)
y=f(x);
}
通過(guò)上述的程序簡(jiǎn)單的表達(dá)作用域奠货,我們來(lái)一道例題學(xué)習(xí)學(xué)習(xí)介褥,還有c語(yǔ)言畢竟是一門程序語(yǔ)言,希望大家在編譯器里面運(yùn)行一下。
#include<stdio.h>
void fun(int *a,int *b)
{int *c;
c=a;a=b;b=c;
}
main()
{
int x=3,y=5,*p=&x,*q=&y;
fun(p,q);printf("%d,%d,",*p,*q);
fun(&x,&y);printf("%d,%d\n",*p,*q);
}
解釋器編譯出來(lái)的結(jié)果是:3,5,3,5
fun函數(shù)交換局部變量a和b的值柔滔,main調(diào)用并不改變參數(shù)的值
變量與函數(shù)的存儲(chǔ)分類
1.靜態(tài)變量(static):靜態(tài)變量是在編譯時(shí)分配存儲(chǔ)空間溢陪,所占存儲(chǔ)單元直到程序結(jié)束時(shí)才釋放,它的值在程序運(yùn)行過(guò)程中一直存在睛廊,且變量只初始化一次
靜態(tài)變量包括全局變量和局部變量:
(1)全局變量不能使用auto.register關(guān)鍵字去定義全局變量形真;關(guān)鍵字static用于定義全局變量時(shí),具有特殊含義超全,即限制該變量只在當(dāng)前文件夾有效咆霜,不能被其他文件訪問。
(2)局部變量:局部變量默認(rèn)情況下為auto類型卵迂,存儲(chǔ)在動(dòng)態(tài)存儲(chǔ)區(qū)中裕便。
2.自動(dòng)變量:auto 自動(dòng)變量的存儲(chǔ)空間是當(dāng)程序執(zhí)行到定義它的函數(shù)或語(yǔ)句塊時(shí)才分配,當(dāng)函數(shù)執(zhí)行結(jié)束后自動(dòng)釋放见咒,變量的值自動(dòng)消失偿衰,每次調(diào)用函數(shù)時(shí)系統(tǒng)自動(dòng)分配存儲(chǔ)空間,并重新執(zhí)行初始化語(yǔ)句改览。
3.寄存器變量(register):局部變量下翎,只不過(guò)該變量不在內(nèi)存而在寄存器中.
加油,加油