1. 程式人生 > >c語言-變數的四種儲存型別

c語言-變數的四種儲存型別

auto         自動變數
register     暫存器變數
extern 外部變數
static 靜態變數 

一般形式:

儲存型別說明符 資料型別說明符 變數名,變數名...

static int a,b;
auto char c1,c2;
static int a[3]={1,2,3};
extern int x,y;
auto自動變數:
     凡未加儲存型別說明的變數均為自動變數,自動變數可以省去auto。
 
 int i,j,k; 

 等價於

 auto i,j,k;
  注意:
      自動變數的作用域僅限於定義該變數的個體內。
   

register暫存器變數:

        各類變數都存放在儲存器捏,當對一個變數頻繁讀寫時,必然要反覆訪問儲存器,從而花費大量的存取時間。c提供了暫存器變數,這種變數存放在CPU的暫存器中,使用時不需要訪問記憶體,直接從暫存器中讀寫,可提高效率。
 

 對於迴圈次數多的迴圈控制變數可定義為暫存器變數。

#include <stdio.h>
main(){
	register i,s=0;
	for(i=1;i<200;i++){
		s=s+i;
		printf("s=%d\n",s);
	}
}
注意:
1、只有區域性自動變數和形式引數才可以定義為暫存器變數。 
2、根據機器不同,cpu中暫存器的個數是有限制的。 


相關推薦

c語言-變數儲存型別

auto         自動變數register     暫存器變數extern 外部變數static 靜態變數 一般形式:儲存型別說明符 資料型別說明符 變數名,變數名...static int a,b; auto char c1,c2; static int a[3

C語言中的儲存型別

   一、 首先來說說資料的型別,所有的資料都有兩種型別,一是常見的資料型別,如int,float等,一種便是今天的重頭戲,儲存型別。總共有四種儲存型別的變數,分別為自動變數(auto)、靜態變數(s

C語言的五儲存

五種儲存類 C Primer Plus 第十二章 儲存類、連結和記憶體管理 儲存類 時期 作用域 連結 宣告方式 自動 自動 程式碼塊 空

C || 圖的儲存結構實現

1. 陣列表示法: #include <stdio.h> #include <limits.h> #define INFINITY INT_MAX #define Maxvex 100 typedef struct graph {

C語言程式結構

1、順序結構 順序結構的程式設計是最簡單的,只要按照解決問題的順序寫出相應的語句就行,它的執行順序是自上而下,依次執行。 例如;a = 3,b = 5,現交換a,b的值,這個問題就好像交換兩個杯子水

C語言筆記之資料儲存型別

變數的儲存型別是指儲存變數值的記憶體型別。變數的儲存型別決定變數何時建立,何時銷燬以及他的值要儲存多久。 在任何程式碼塊之外申明的變數總是儲存與靜態記憶體中(不屬於堆疊的記憶體),這叫做靜態(static)變數。對於這種變數,你無法為他們指定其

C++中的強制型別轉換的區別

使用標準C++的型別轉換符:static_cast、dynamic_cast、reinterpret_cast、和const_cast。 1 static_cast 用法:static_cast < type-id > ( expression

C語言變數型別儲存位置

1. C語言變數主要分為全域性變數、靜態全域性變數、區域性變數、靜態區域性變數和暫存器變數。其中靜態變數用static關鍵字進行修飾。程式所佔用的記憶體可以分為以下幾個部分: (1)程式碼段-存放程式程式碼,只讀的,不能修改。 (2)全域性區(靜態區),又稱為資料段。其中.data段存放的是

C語言變數儲存型別

變數的儲存型別 “這些都是用來修飾變數的,修飾函式的時候,其可能有不同的含義,請加以區分,後面會針對修飾函式來進行總結” 儲存型別 變數 說明 auto 自動變數 區域性變數在預設的情況下會歸為自動變數,預設是不會進行初始

C語言變數定義與微控制器資料儲存方式

說明:文章來源 EDN電子技術設計:嵌入式程式開發需要知道的儲存器知識 MCU 中常使用的儲存器型別有:FLASH、RAM、ROM(包括EEPROM) 在軟體角度來看,程式和資料的儲存分為以下幾個部分 程式碼段和常量段都可以用於儲存常量資料,其主要區

C++ :強制型別轉換方式 以及const常量摺疊

  遇到的幾個問題: (1)reinterept_cast:Int和float不能轉換  :傳引用 (2)cons_cast:去掉const屬性,在編譯階段  const int num = 12;    *c++裡

c++面試經典問題-強制型別轉換

Static_cast和Dynamic_cast放在一起比較容易記,一動一靜 Static_cast是靜態轉換,也就是編譯時轉換,可以完成基礎型別的轉換,然後任意型別指標與void指標的轉換,還可以完成同一個繼承體系中型別的轉換。 Dynamic_cast是執行時

C++】強制型別轉換

強制型別轉換在有些地方起到了很大的作用,在看C++中的強制型別轉換時,我們首先看一下我們熟悉的C語言中的強制型別轉換。 一.C語言的強制型別轉換 C語言中強制型別轉換分為兩種: 隱式型別轉換(相似型別轉換,及相關型別的轉換,這裡和型別提升也優點相似) 顯示型別轉換(

python基礎之函式型別、函式的巢狀呼叫、函式的區域性變數和全域性變數

函式根據有沒有引數,有沒有返回值,可以相互組合,一共有4種 * 無引數,無返回值 * 無引數,有返回值 * 有引數,無返回值 * 有引數,有返回值 <1>無引數,無返回值的函式此類函式,不能接收引數,也沒有返回值,一般情況下,列印提示燈類似的功能,使用這類的函式 def pr

IOS --Object-C 儲存資料的方式

在iOS開發過程中,不管是做什麼應用,都會碰到資料儲存的問題。將資料儲存到本地,能夠讓程式的執行更加流暢,不會出現讓人厭惡的菊花形狀,使得使用者體驗更好。下面介紹一下資料儲存的方式: 1.NSKeyedArchiver:採用歸檔的形式來儲存資料,該資料物件需要遵守NSCoding協議,並且

c++中強制型別轉換(const_cast、static_cast應用最多)

c++動態型別轉換有四種const_cast、static_cast、dynamic_cast、reinterpreter_cast 前面兩個用的多,但是後面的針對其設計理念有許多其他的實現方法可達到同樣的效果 1. static_cast (1)用於基

C語言的三整型資料型別:int、short int和long int

int資料型別的位數為16位,short int資料型別的位數也是16位。而long int的位數為32位,可用來儲存比較大的整數。  short int 和 long int可以縮寫為short 和 long。               C語言中的整型資料型別int、

C++】 強制型別轉換

總 結   去const屬性用const_cast。   基本型別轉換用static_cast。   多型類之間的型別轉換用daynamic_cast。   不同型別的指標型別轉換用reinterpreter_cast。 static_cast 任何具有明

C語言中幾型別所佔位元組數

最近經常會遇到C語言中各型別變數所佔位元組數的問題,索性在這裡做一個整理總結。 其實C標準並沒有具體給出規定哪個基本型別應該是多少個位元組數,而且這個也與OS、編譯器有關,比如同樣是在32位作業系統,VC++的編譯器下int型別為4個位元組,而在tuborC下

C++11強制型別轉換

1、  static_cast: 功能:完成編譯器認可的隱式型別轉換。 格式type1 a; type2 b = staic_cast<type1>(a);將type1的型別轉化為type2的型別; 使用範圍: (1)基本資料型別之間的轉換,如int->d