- 相關(guān)推薦
C語言中變量儲存的類別
C語言根據(jù)變量的生存周期來劃分,可以劃分為靜態(tài)存儲方式和動(dòng)態(tài)存儲方式。
C語言中變量儲存的類別
靜態(tài)存儲方式:是指在程序的運(yùn)行期間分配固定的存儲空間的方式。靜態(tài)存儲區(qū)中存儲放了在整個(gè)程序執(zhí)行過程中都存在的變量,如全局變量
動(dòng)態(tài)存儲方式:是指在程序運(yùn)行期間根據(jù)需要進(jìn)行動(dòng)態(tài)的分配存儲空間的方式。動(dòng)態(tài)存儲區(qū)中存放的變量是根據(jù)程序運(yùn)行需要而進(jìn)行的需要而建立和釋放的`。通常包括: 1. 函數(shù)形式參數(shù);2. 自動(dòng)變量;3. 函數(shù)調(diào)用時(shí)的現(xiàn)場保護(hù)、4. 和返回值地址等。
C語言中的存儲類別又分為4類:
自動(dòng)(auto)、
靜態(tài)(static)、
動(dòng)態(tài)(extern)
寄存器(register)
1、 用關(guān)鍵字auto定義的變量為自動(dòng)變量,auto可以省略,auto不寫則隱含定為”自動(dòng)存儲類別“,屬于動(dòng)態(tài)存儲方式。
1 2 3 4 5 | int fn( int a) //定義f函數(shù),a為參數(shù) { //定義b,c為自動(dòng)變量 auto int b,c; } |
2、用static修飾的為靜態(tài)變量,如果定義在函數(shù)內(nèi)部,稱之為靜態(tài)局部變量;如果定義在函數(shù)外部,稱之為靜態(tài)外部變量,
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | #include <stdio.h> void fn() { static int x = 0 ; x++; printf( "fn: x=%d
" ,x); } int main() { int i; for (i= 0 ;j< 10 ;i++) { fn(); } return 0 ; }</stdio.h> |
注意:
靜態(tài)局部變量屬于靜態(tài)存儲類別,在靜態(tài)存儲區(qū)內(nèi)分配存儲單元,在程序整個(gè)運(yùn)行期間都不釋放;
靜態(tài)局部變量在編譯時(shí)賦初值,即只賦初值一次;如果在定義局部變量時(shí),不賦初值的話,則對靜態(tài)局部變量來說,編譯時(shí)自動(dòng)賦初值0.(對數(shù)值型變量)或空字符(對字符變量)。
3、為了提高效率,C語言允許將局部變量得值放在CPU中的寄存器中,這種變量叫”寄存器變量“,用關(guān)鍵字register做聲明
1 2 3 4 | void fn() { register int i; } |
注意:只有局部自動(dòng)變量和形式參數(shù)可以作為寄存器變量;一個(gè)計(jì)算機(jī)系統(tǒng)中的寄存器數(shù)目有限,不能定義任意多個(gè)寄存器變量
局部靜態(tài)變量不能定義為寄存器變量。
4、用extern聲明的變量是外部變量,外部變量的意義是某函數(shù)可以調(diào)用在該函數(shù)之后定義的變量
1 2 3 4 5 6 7 | #include <stdio.h> int main() { extern int x; //這里聲明的是外部局部變量 printf( "extern x=%d
" ,x); } int x= 100 ;</stdio.h> |
任務(wù):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | #include <stdio.h> void fn() { static int x = 1 ; x *= 2 ; printf( "x=%d
" ,x); } int main() { int i; for (i= 0 ;i< 5 ;i++) { fn(); } extern int x; printf( "x=%d
" ,x); return 0 ; } int x = 100 ;</stdio.h> |
運(yùn)行結(jié)果是x=2;x=4;x=8;x=16;x=32;x=100
【C語言中變量儲存的類別】相關(guān)文章:
c語言中什么是變量06-05
C語言中的相關(guān)變量知識05-11
c語言中什么是靜態(tài)變量02-02
c語言中使用環(huán)境變量的技巧07-13
C語言中根據(jù)成員變量來排序的方法04-13
C語言中指針變量作為函數(shù)參數(shù)詳解07-01
C語言中判斷int、long型等變量是否賦值的方法06-10
JAVA語言中的實(shí)例變量06-01