存儲類型是自動類型 外部、靜態和寄存器類型都需要聲明的 默認的就是自動類型
2. 在C語言中,局部變數的存儲類別自動默認為( )深圳
B
內存中供用戶使用的存儲空間分為代碼區與數據區兩個部分。變數存儲在數據區,數據區又可分為靜態存儲區與動態存儲區。
靜態存儲是指在程序運行期間給變數分配固定存儲空間的方式。如全局變數存放在靜態存儲區中,程序運行時分配空間,程序運行完釋放。
動態存儲是指在程序運行時根據實際需要動態分配存儲空間的方式。如形式參數存放在動態存儲區中,在函數調用時分配空間,調用完成釋放。
C語言中對變數的說明包括兩方面的內容:變數類型以及變數的存儲類型。變數類型如:int(整形),char(字元型)是用來說明變數所佔用的內存空間的大小。變數存儲類型用來說明變數的作用范圍。
C語言的變數存儲類有:自動類、寄存器類、靜態類和外部類。
關鍵字auto加在變數名及其類型前,用來說明它是自動變數。局部變數是指在函數內部說明的變數(有時也稱為自動變數)。用關鍵字auto進 行說明, 當auto省略時, 所有的非全程變數都被認為是局部變數, 所以auto實際上 從來不用。 局部變數在函數調用時自動產生, 但不會自動初始化, 隨函數調用的結束, 這個變數也就自動消失了, 下次調用此函數時再自動產生, 還要再賦值, 退出時又自動消失。
static稱為靜態變數。根據變數的類型可以分為靜態局部變數和靜態全程變數。
1. 靜態局部變數
它與局部變數的區別在於: 在函數退出時, 這個變數始終存在, 但不能被其它
函數使用, 當再次進入該函數時, 將保存上次的結果。其它與局部變數一樣。
2. 靜態全程變數
靜態 全程變數就是指只在定義它的源文件中可見而在其它源文件中不可見的變數。它與
全程變數的區別是: 全程變數可以再說明為外部變數(extern), 被其它源文件使用,而靜態全程變數卻不能再被說明為外部的, 即只能被所在的源文件使用。
extern稱為外部變數。為了使變數除了在定義它的源文件中可以使用外, 還要 被其它文件使用。因此, 必須將全程變數通知每一個程序模塊文件, 此時可用 extern來說明。
寄存器變數to能夠長在執行速度很重要的情況下使用。其思想是告訴編譯程序把該變數放在一個CPU寄存器中。因為數據在寄存器中操作比在內存中快,這樣就提高了程序代碼的執行速度。寄存器變數的說明是在變數名及類型之前加上關鍵字register。值得注意的是取地址運算符&不能作用於寄存器變數。
本文來自CSDN博客,轉載請標明出處:
△
3. C語言中變數的存儲類型有哪幾種,存儲方式哪幾種謝嘍
C語言中變數的存儲類型有哪幾種,存儲方式哪幾種?謝嘍
我想你說的應該是數據類型吧
沒記錯的話應該有以下幾種:
靜態變數:變數的生存期是從程序開始到結束;
動態變數:在程序運行當中需要調用該變數時才為它分配內存;
寄存器變數:存在於寄存器中:用於需要高速存取數據的場合
C語言 *** 有哪幾種存儲類型?
Turbo C2.0支持四種變數存儲類型。說明符如下:
auto static extern register
下面分別來介紹。
一、auto
auto稱為自動變數。
局部變數是指在函數內部說明的變數(有時也稱睜鬧孫為自動變數)。用關鍵字auto進
行說明, 當auto省略時, 所有的非全程變數都被認為是局部變數, 所以auto實際上
從來不用。
局部變數在函數調用時自動產生, 但不會自動初始化, 隨函數調用的結束, 這
個變數也就自動消失了, 下次調用此函數時再自動產生, 還要再賦值, 退出時又自
動消失。
二、static
static稱為靜態變數。根據變數的類型可以分為靜態局部變數和靜態全程變數。
1. 靜態局部變數
它與局部變數的區別在於: 在函數退出時, 這個變數始終存在, 但不能被其它
函數使用, 當再次進入該函數時, 將保存上次的結果。其它與局部變數一樣。
2. 靜態全程變數
Turbo C2.0允許將大型程序分成若干獨立模塊文件分別編譯, 然後將所有模塊
的目標文件連接在一起, 從而提高編譯速度, 同時也便於軟體的管理和維護。靜態
全程變數就是指只在定義它的源文件中可見而在其它源文件中不可見的變數。它與
全程變數的區別是: 全程變數可以再說明為外部變數(extern), 被其它源文件使用,
而靜態全程變數卻不能再被說明為外部的, 即只能被所在的源文件使用。
三、extern
extern稱為外部變數。為了使變數除了在定義它的源文件中可以使用外, 還要彎頌
被其它文件使用。因此, 必須將全程變數通知每一個程序模塊文件, 此時可用
extern來說明。
四、register
register稱為寄存器變數。它只能用於整型和字元型變數。定義符register說
明的變數被Turbo C2.0存儲在CPU的寄存器中, 而不是象普通的變數那樣存儲在內
存中, 這樣可以提高運算速度。但是Turbo C2.0隻允許同時定義兩個寄存器變數,
一旦超過兩個, 編譯程序會自動地將超過限制數目的寄存器變數當作悉鏈非寄存器變數
來處理。因此, 寄存器變數常用在同一變數名頻繁出現的地方。
另外, 寄存器變數只適用於局部變數和函數的形式參數, 它屬於auto型變數,
因此, 不能用作全程變數。定義一個整型寄存器變數可寫成:
register int a;
對於以上所介紹的變數類型和變數存儲類型將會在以後的學習中, 通過例行程
序中的定義、使用來逐漸加深理解。
C++局部變數的存儲方式有哪幾種
靜態存儲方式與動態存儲方式(具體:自動的、靜態的、寄存器的register、外部的extern)
在內存中的用戶的存儲空間分為:程序區、靜態存儲區、動態存儲區。
靜態存儲方式:在程序運行期間,系統對變數分配的固定空間。
動態存儲方式:在程序運行期間,系統對變數分配的動態空間
1>用static來聲明靜態局部變數,局部變數的值在函數結束後不消失而保留原值,即其佔用的存儲單元不釋放,在下一次該函數調用時,該變數保留上次函數調用結束時的值。靜態局部變數的默認值為0.
2>動態的局部變數當函數體被調用完畢時,變數的空間被釋放。
c語言定義變數時,若無變數存儲類型說明,則變數的存儲類型是
c
變數存儲類別分為哪幾種
C語言中的變數有四種存儲類型,這四種存儲類型的關鍵字分別是
auto(自動)
extern(外部)
static(靜態)
register(寄存器)
本地存儲方式有哪幾種
資料庫,nsuserdefauts, file , plist,archieve 歸檔
比較小的就放在nsuserdefaults(以文件設計的存放在Libraray中)
資料庫裡面適合存放一條一條的記錄
file 一般存普通文件,圖片,視頻,音頻等
plist 存放比 nsuserdefaults 大一些的
歸檔 nsarchieve 可以存對象
當變數的存儲類型定義預設時,系統默認為變數的存儲類型為? c語言
當變數的存儲類型定義預設時,系統默認為變數的存儲類型為auto類型,分配在靜態區.
c語言基本變數有哪些存儲類型?
老譚的書上有:
實型數據一般佔4個位元組(32位)內存空間。按指數形式存儲。
實數3.14159在內存中的存放形式如下:
+ .314159 1
數符 小數部分 指數
其中:
小數部分佔的位(bit)數愈多,數的有效數字愈多,精度愈高。
指數部分佔的位數愈多,則能表示的數值范圍愈大。
基礎加強喲。
在C++語言中,局部變數的隱含存儲類型是() auto 無存儲類型 答案為什麼是無存類型
一個C變數有以下兩種存儲時期之一:靜態存儲時期(static storage ration)和自動存儲時期(automatic storage ration)。
具有代碼塊作用域的變數一般情況下具有自動存儲時期。在程序進入定義這些變數的代碼塊時,將為這些變數分配內存;當退出這個代碼塊時,分配的內存將被釋放。該思想把自動變數使用的內存視為一個可以重復使用的工作區或者暫存內存。
局部變數都屬於自動類型,即一旦程序棧彈出,局部變數消失。
什麼是變數的存儲類型
量有4種存儲類型,分別是auto(自動型)、static(靜態型)、register(寄存器型)和extern(外部型)。在定義或說明一個變數時可以加上存儲類型關鍵字,以限定其存儲類別。
存儲類型決定了系統將在哪一個數據存儲區為變數分配存儲空間。
變數來源於數學,是計算機語言中能儲存計算結果或能表示值抽象概念。變數可以通過變數名訪問。在指令式語言中,變數通常是可變的;但在純函數式語言(如Haskell)中,變數可能是不可變(immutable)的。在一些語言中,變數可能被明確為是能表示可變狀態、具有存儲空間的抽象(如在Java和Visual Basic中)。
由於變數讓你能夠把程序中准備使用的每一段數據都賦給一個簡短、易於記憶的名字,因此它們十分有用。變數可以保存程序運行時用戶輸入的數據(如使用InputBox函數在屏幕上顯示一個對話框,然後把用戶鍵入的文本保存到變數中)、特定運算的結果以及要在窗體上顯示的一段數據等。
如果在定義一個內部變數時,在定義語句最前面加上static存儲類型限定詞,那麼該變數將是一個靜態型變數。該變數將在靜態數據區分配存儲空間。這種變數作用域雖然只在函數內部,但是該變數將一直在靜態數據區占據存儲空間,直到程序運行結束。
4. 在C語言中,局部變數的存儲類別自動默認為( )
棧區,或者cpu通用寄存器中!!!
不知道你對cpu有過了解么???
cpu內核中會有一個叫做sp的寄存器,存放著棧頂地址,所有局部變數,和中間數據都在這里存放,在一個程序調用一個函數,sp指針會增加該堆棧用到的所有臨時內存的長度,局部變數也在其中,在函數退出時sp還原到原來的值,這樣被調用的函數用到的所有臨時數據也都釋放。。。
當然也會存在cpu的通用寄存器中,因為有些cpu工作寄存器數量較多,如果局部變數不多,會直接放在寄存器內,而不是
放到內存里,這樣也提高了執行速度。。。內存賦值需要取地址和寫內存,本身步奏就多,而且內存操作沒有寄存器塊,
所以如果工作寄存器夠用,是會存在工作寄存器(根據編譯器而定,當然編譯器考慮的通常很周全,會讓速度盡量快)
5. 如何理解自動變數和局部變數
C語言中提供了存儲說明符auto,register,extern,static說明的四種存儲類別。四種存儲類別說明符有兩種存儲期:自動存儲期和靜態存儲期。其中auto和register對應自動存儲期。具有自動存儲期的變數在進入聲明該變數的程序塊是被建立,它在該程序塊活動時存在,退出該程序塊時撤銷。
在函數內部定義的變數成為局部變數。在某些C語言教材中,局部變數稱為自動變數,這就與使用可選關鍵字a u t o定義局部變數這一作法保持一致。局部變數僅由其被定義的模塊內部的語句所訪問。換言之,局部變數在自己的代碼模塊之外是不可知的。切記:模塊以左花
括弧開始,以右花括弧結束。
對於局部變數,要了解的最重要的東西是:它們僅存在於被定義的當前執行代碼塊中,即局部變數在進入模塊時生成,在退出模塊時消亡。
定義局部變數的最常見的代碼塊是函數。
整數變數x被定義了兩次,一次在func1()中,一次在func2()中。func1()和func2()中的x互不相關。其原因是每個x作為局部變數僅在被定義的塊內可知。
語言中包括了關鍵字auto,它可用於定義局部變數。但自從所有的非全局變數的預設值假定為auto以來,auto就幾乎很少使用了,
6. 在C語言中,局部變數的存儲類別自動默認為( )
C語言,局部變數的存儲類別自動默認為
A,函數內部或語句組內部的局部變數默認是自動變數,即auto。
7. C語言中變數的存儲類型有哪幾種,存儲方式哪幾種謝嘍
在C語言中,對變數的存儲類型說明有以下四種:
1、auto 自動變數
2、register 寄存器變數
3、extern 外部變數
4、static 靜態變數
所謂存儲類型是指變數佔用內存空間的方式,也稱為存儲方式。
變數的存儲方式可分為「靜態存儲」和「動態存儲」兩種。
1、靜態存儲變數通常是在變數定義時就在存儲單元並一直保持不變,直至整個程序結束。
2、動態存儲變數是在程序執行過程中,使用它時才分配存儲單元,使用完畢立即釋放。典型的例子是函數的形式參數,在函數定義時並不給形參分配存儲單元,只是在函數被調用時,才予以分配,調用函數完畢立即釋放。
如果一個函數被多次調用,則反復地分配、釋放形參變數的存儲單元。從以上分析可知,靜態存儲變數是一直存在的,而動態存儲變數則時而存在時而消失。
(7)局部變數自動存儲類別擴展閱讀:
變數根據定義的位置的不同的生命周期,具有不同的作用域,作用域可分為6種:全局作用域,局部作用域,語句作用域,類作用域,命名空間作用域和文件作用域。
一、從作用域看:
1、全局變數具有全局作用域。全局變數只需在一個源文件中定義,就可以作用於所有的源文件。當然,其他不包含全局變數的定義的源文件需要用extern關鍵字再次聲明這個全局變數。
2、靜態局部變數具有局部作用域,它只被初始化一次,自從第一次被初始化直到程序運行結束一直存在,它和全局變數的區別在於全局變數對所有函數都是可見的,而靜態局部變數只對定義自己的函數體始終可見。
3、局部變數也只有局部作用域,它是自動對象(auto),它在程序運行期間不是一直存在,而是只在函數執行期間存在,函數的一次調用執行結束後,變數被撤銷,其所佔用的內存也被收回。
4、靜態全局變數也具有全局作用域,它與全局變數的區別在於如果程序包含多個文件的話,它作用於定義它文件里,不能作用到其他文件里,即被static關鍵字修飾過的變數具有文件作用域。這樣即使兩個不同的源文件都定義了相同名字的靜態全局變數,它們也是不同的變數。
二、從分配空間看:
全局變數,靜態局部變數,靜態全局變數都在靜態存儲區分配空間,而局部變數在棧里分配空間。
全局變數本身就是靜態存儲方式,靜態全局變數當然也是靜態存儲方式。這兩者在存儲方式上並無不同。這兩者的區別雖在於非靜態全局變數的作用域是整個源程序,當一個源程序由多個源文件組成時,非靜態的全局變數在各個源文件中都是有效的。
而靜態全局變數則限制了其作用域,即只在定義該變數的源文件內有效,在同一個源程序的其他源文件中不能使用它。由於靜態全局變數的作用域局限於一個源文件內,只能為該源文件內的函數公用,因此可以避免在其他源文件中引起錯誤。
1、靜態變數會放在程序的靜態數據存儲區(全局可見)中,這樣可以在下一次調用的時候還可以保持原來的賦值。這一點是它與堆棧變數和堆變數的區別。
2、變數用static告知編譯器,自己僅僅在變數的作用范圍內可見。這一點是它與全局變數的區別。
參考資料來源:網路-變數-存儲類型
8. c語言中,局部變數默認的存儲類型是
應該是auto自動變數。
局部變數預設是自動變數auto,作用文件部位的預設是靜態變數static
9. 變數的隱含存儲類別
在C語言中,變數的存儲類別包括以下四種:
1. 自動存儲類別(auto):這是默認的存儲類別,局部變數和函數參數都屬於自動存儲類別。這種變數在函數調用時被創建,在函數返回時被銷毀。
2. 靜態存儲類別(static):靜態舉敏變數在程序執行期間一直存在,不會被銷毀。靜態變數可以在函數內部或者函數外部定義,如果在函數內部定義,則只能在該函數內部訪問。
3. 寄存器存儲類別(register):這種變數被存儲在CPU的寄存器中戚答段,訪問速度非常快。但是,由於寄存器數量有限,所以只有少量的變數可以使用寄存器存儲類別。
4. 外部存儲類別(extern):這種變數可以在多個源文件中共享高譽,通常用於在不同的源文件中共享全局變數或函數。
需要注意的是,變數的存儲類別只是指變數在內存中的存儲方式,不同的存儲類別對變數的作用域、生命周期和訪問方式等都有不同的影響。在編寫程序時,需要根據實際需求選擇合適的存儲類別。
10. 函數中未指定存儲類別的局部變數,其隱含的存儲類別為()
函數中未指定存儲類別的局部陪襪變數,其隱含的存儲類別為自動存儲類別。
函數中的局部變數,如果不專門聲明為static存儲類別,都是動態的分配存儲空間的,數租唯據存儲在動態存儲區中。
這類變數叫做自動變數,自動變數可以用關鍵字auto作為存儲類別的聲明,實際上關鍵字auto是可以省略的(一般都是不寫的),不寫則自動隱含為「自動存儲類別「。
(10)局部變數自動存儲類別擴展閱讀:
默認情況下,在代碼塊內聲明的變數都是自動變數,但蘆型激亦可用自動變數的關鍵字auto明確標識存儲類;而如若使用register(而非auto)存儲類標識代碼塊內的變數,編譯器就會將變數緩存於處理器內的寄存器中,此種情況下不能對該變數或其成員變數使用引用操作符&以獲取其地址,因為&只能獲取內存空間中的地址。
除此以外,由於寄存器的數量及其所能存儲的數據類型受硬體限制而可能無法存儲指定變數,編譯器可以忽略聲明內的register關鍵字。對於一個未初始化的自動變數來說,在為其賦值之前其值都為undefined(未定義)。
在C++中,如諺語「資源獲取即初始化」(Resource Acquisition Is Initialization,常縮寫為RAII)所述,自動變數的構造函數在程序運行至聲明部分的時候才會被調用,而當程序運行至所給的程序塊末端的時候則調用析構函數,這一特性常應用於資源的分配與釋放管理,如自動關閉已開啟的文件或自動釋放空閑內存。