存儲類型關鍵字有如下4個:
1 auto :聲明自動變數。
此項為預設值。auto int a;和int a;是完全相同的。所以在編程中一般看不到auto的使用。
2 extern:聲明外部變數。
功能為擴展全局變數的作用域。
3 register:聲明寄存器變數。
聲明後,變數存儲於CPU寄存器中。是最快的C語言變數。
但是需要注意的是,CPU寄存器有限的,所以並不是所有聲明為register的變數都會存在寄存器中。使用register更像是一個申請,具體是否可以存在寄存器還要看系統情況。 該項盡量少用。
4 static :聲明靜態變數。
有靜態局部變數和靜態全局變數兩種。用於局部變數時,將變數聲明周期延長到整個程序運行。用於全局變數時,將全局變數作用域限定在本文件。
㈡ C語言中有哪些存儲類型
c語言中的存儲類型有auto, extern, register, static 這四種,存儲類型說明了該變數要在進程的哪一個段中分配內存空間,可以為變數分配內存存儲空間的有數據區、BBS區、棧區、堆區。
1. auto存儲類型
auto只能用來標識局部變數的存儲類型,對於局部變數,auto是默認的存儲類型,不需要顯示的指定。因此,auto標識的變數存儲在棧區中。
2. extern存儲類型
extern用來聲明在當前文件中引用在當前項目中的其它文件中定義的全局變數。如果全局變數未被初始化,那麼將被存在BBS區中,且在編譯時,自動將其值賦值為0,如果已經被初始化,那麼就被存在數據區中。全局變數,不管是否被初始化,其生命周期都是整個程序運行過程中,為了節省內存空間,在當前文件中使用extern來聲明其它文件中定義的全局變數時,就不會再為其分配內存空間。
3. register存儲類型
聲明為register的變數在由內存調入到CPU寄存器後,則常駐在CPU的寄存器中,因此訪問register變數將在很大程度上提高效率,因為省去了變數由內存調入到寄存器過程中的好幾個指令周期。
4. static存儲類型
被聲明為靜態類型的變數,無論是全局的還是局部的,都存儲在數據區中,其生命周期為整個程序,如果是靜態局部變數,其作用域為一對{}內,如果是靜態全局變數,其作用域為當前文件。靜態變數如果沒有被初始化,則自動初始化為0。靜態變數只能夠初始化一次。
㈢ 請通俗一點的講講指針是怎麼存儲的
指針就是指向一個地址啦。或許可以這樣形容,宿舍知道吧?每一個宿舍就相當於一個地址,然後宿舍號就是指向這個地址的,你一說宿舍號就基本上知道說的是哪個宿舍了。這個指針也是一樣。存儲時,指針地址加一,就像安排宿舍時,這個宿舍安排滿了,就下一個宿舍,宿舍號碼加1,希望解釋得夠清楚吧,盡力了。
㈣ 指針的存儲類型和數據類型的意義是什麼
1.定義指針指定的數據類型是指指向數據的類型,並不是指針的類型,指針的數據類型是內存地址類型。
2.之所以定義指針時指明它指向數據的類型,是因為有些數據類型不能進行某些操作(運算),比如兩個char相乘(或相除)沒有任何意義。假如說定義指針時不需要指明它指向數據的類型,那麼有指針p1和p2,那麼(*p1)*(*p2)在不知道p1和p2指向的數據類型時就不能保證它對數據類型運算的限制了;
3,如果你只是想用指針保存一下數據的內存地址而不去對它進行運算你可以定義void類型的指針,它能指向任何數據類型,但是他不能進行任何運算。
另外你看下C++ Primer這本書,他對指針說明的很詳細
㈤ C語言指針基本概念及其指針變數的定義是什麼
指針是常見間接訪問方式.指針就像一個快捷方式,它指向內存的一個地址,可以通過指針就可以間接的訪問到數據。對於計算機,訪問內存的方式有兩種,直接訪問和間接訪問。直接訪問通過就是通過變數名稱去訪問。指針概念是構成C/C++的重要元素之一,是變數的一種類型,存放的是指定類型數據的地址,而同類型變數存放的是數據。
指針變數:就是一個變數,其值是可變的,與整形變數、浮點變數等等的命名規則完全相同。 「指針」是概念,「指針變數」是具體實現。指針類型說明,即定義變數為一個指針變數; 指針變數名; 變數值(指針)所指向的變數的數據類型。
(5)存儲類指針擴展閱讀:
與其他高級編程語言相比,C 語言可以更高效地對計算機硬體進行操作,而計算機硬體的操作指令,在很大程度上依賴於地址。指針提供了對地址操作的一種方法,因此,使用指針可使得 C 語言能夠更高效地實現對計算機底層硬體的操作。另外,通過指針可以更便捷地操作數組。在一定意義上可以說,指針是 C 語言的精髓。