C語言關鍵字register、extern、static、一些總結

 
C語言中:

一、register變量

       關鍵字regiter請求編譯器儘可能的將變量存在CPU的寄存器中。有以下幾點注意的地方。

  1. register變量必須是能被CPU寄存器所接受的類型,這通常意味着register變量必須是一個單個的值,並且其長度應小於或等於整型的長度。但是,有些機器的寄存器也能存放浮點數。
  2. register變量可能不存放在內存中,所以不能用取址符運算符“ & ”。
  3. 只有局部變量和形參可以作爲register變量,全局變量不行。
  4. 靜態變量不能定義爲register。

二、static

1、修飾變量(局部和全局變量)

1.1、靜態全局變量

  在全局數據區分配內存;未經初始化的靜態全局變量會被程序自動初始化爲0(自動變量的值是隨機的,除非它被顯式初始化)作用域僅限於變量被定義的文件中。

全局變量和全局靜態變量的區別  

  (1全局變量是不顯式用static修飾的全局變量,但全局變量 默認是靜態的,作用域是整個工程,在一個文件內定義的全局變量,在另一個文件中, 通過extern 全局變量名的聲明,就可以使用全局變量。

  (2全局靜態變量是顯式用static修飾的全局變量,作用域是所在的文件,其他的文件即使用extern聲明也不能使用。

1.2、靜態局部變量

2、靜態函數

  在函數的返回類型前加上static關鍵字,函數即被定義爲靜態函數。靜態函數與普通函數不同,它只能在聲明它的文件當中可見,不能被其它文件使用。其它文件中可以定義相同名字的函數,不會發生衝突。

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