005_C語言--變量存儲類

一個變量的誕生我們可以從它的存儲地址,作用域以及它的鏈接來描述它。

存儲地址

自動存儲地址(棧空間):變量的創建和銷燬是由編譯器來自動控制的。
靜態存儲地址(靜態空間):變量一旦被分配空間就不會被銷燬。
手動存儲地址(堆空間):變量的創建和銷燬是由程序員所控制的。
寄存器存儲地址(寄存器中):變量的創建會去嘗試着申請寄存器空間,申請失敗則自動退化爲自動存儲區。

作用範圍

代碼塊作用域:變量的使用範圍在代碼塊中。
文件作用域:變量的使用範圍在全文件中。

鏈接

空鏈接:其他地方無法使用具有空鏈接的變量。
外部鏈接:外部文本也可使用外部鏈接的變量。
內部鏈接:外部文件不可使用內部鏈接的變量。

關鍵字

  自動

      關鍵字auto聲明瞭一個變量具有自動存儲地址,作用域在代碼塊內和空鏈接的特性。聲明方式爲在代碼塊內聲明。

	#include "stdio.h"
	int main()
	{
		auto int a;
		return 0;
	}

  具有外部鏈接的靜態

      在main函數外部聲明瞭一個變量,該變量就具有:靜態存儲地址,作用域在文件中,外部鏈接。別的文件想使用該變量則需要加上extern關鍵字。

	#include "stdio.h"
	int a;
	int main()
	{
		return 0;
	}

  具有內部鏈接的靜態

      在main函數外部聲明瞭一個變量同時加上static,該變量就具有:靜態存儲地址,作用域在文件中,內部鏈接。

	#include "stdio.h"
	static int a;
	int main()
	{
		return 0;
	}

  空鏈接的靜態

      在代碼塊內聲明瞭一個變量同時加上static,該變量就具有:靜態存儲地址,作用域在代碼塊中,空鏈接。

	#include "stdio.h"
	int main()
	{
		static int a;
		return 0;
	}

  寄存器

      在代碼塊內聲明瞭一個變量同時加上register,該變量就具有:寄存器存儲地址,作用域在代碼塊中,空鏈接。

	#include "stdio.h"
	int main()
	{
		register int a;
		return 0;
	}

  基於指針的存儲類

      上述的存儲類有一個共同之處:再決定了使用哪一種存儲類之後,就自動決定了作用域和存儲時期。
      在我們學過指針之後,我們可以申請一種更強大的變量。然後通過指針操作對其進行操作,

	#include "stdio.h"
	int main()
	{
		int * pa = (int *)malloc( sizeof(int) );
		return 0;
	}

還未寫完。有空來完善

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章