當前位置:首頁 » 存儲配置 » c語言的auto型變數是存儲在哪裡

c語言的auto型變數是存儲在哪裡

發布時間: 2022-09-04 19:49:11

1. c語言所有變數都默認為auto,全局變數不能為auto,那全局變數默認為什麼

1、首先在C語言軟體中,auto變數可以存儲整數類型,如下圖所示。

2. c語言中變數儲存auto和static是怎麼用

局部變數按照存儲形式可分為auto, static。
與auto類型(普通)局部變數相比, static局部變數有三點不同:
1. 存儲空間分配不同
auto類型分配在棧上, 屬於動態存儲類別, 占動態存儲區空間, 函數調用結束後自動釋放, 而static分配在靜態存儲區, 在程序整個運行期間都不釋放. 兩者之間的作用域(有效范圍)相同, 但生存期不同.
2. static局部變數在所處模塊在初次運行時進行初始化工作, 且只操作一次。
3. 對於局部靜態變數, 如果不賦初值, 編譯期會自動賦初值0或空字元, 而auto類型的初值是不確定的.
特點: static局部變數的」記憶性」與生存期的」全局性」
所謂」記憶性」是指在兩次函數調用時, 在第二次調用進入時, 能保持第一次調用退出時的值.

注意事項:
1. 「記憶性」, 程序運行很重要的一點就是可重復性, 而static變數的」記憶性」破壞了這種可重復性, 造成不同時刻至運行的結果可能不同.
2. 「生存期」全局性和唯一性. 普通的local變數的存儲空間分配在stack上, 因此每次調用函數時, 分配的空間都可能不一樣, 而static具有全局唯一性的特點, 每次調用時, 都指向同一塊內存, 這就造成一個很重要的問題 ---- 不可重入性!!!

3. 關於c語言auto變數和static變數區別

一、主體不同

1、auto變數:是一個C/C++語言存儲類型,僅在語句塊內部使用。

2、static變數:在計算機編程領域指在程序執行前系統就為之靜態分配存儲空間的一類變數。

二、作用域范圍不同

1、auto變數:初始化可為任何錶達式,其特點是當執行流程進入該語句塊的時候初始化可為任何錶達式。

2、static變數:針對某一源文件的以static聲明的文件級變數與函數的作用域只限於文件內(只在文件內可見),也即「內部連接」,因而可以用來限定變數的作用域。


三、特點不同

1、auto變數:具有自動存儲期的變數在進入聲明該變數的程序塊時被建立,它在該程序塊活動時存在,退出該程序塊時撤銷。

2、static變數:在函數內以static聲明的變數雖然與自動局部變數的作用域相同,但存儲空間是以靜態分配而非默認的自動分配方式獲取的,因而存儲空間所在區域不同。


4. C語言中auto變數怎麼樣的啊,能說明白點嗎

auto:它很寬恆大量的,你就當它不存在吧。編譯器在默認的預設情況下,所有變數
都是auto 的,僅在語句塊內部使用,初始化可為任何錶達式,其特點是當執行流程進入該語句塊的時候初始化可為任何錶達式。C語言中提供了存儲說明符auto、register、extern、static說明的四種存儲類別。四種存儲類別說明符有兩種存儲期:自動存儲期和靜態存儲期。其中auto和register對應自動存儲期。具有自動存儲期的變數在進入聲明該變數的程序塊時被建立,它在該程序塊活動時存在,退出該程序塊時撤銷。在函數內部定義的變數成為局部變數。在某些C語言教材中,局部變數稱為自動變數,這就與使用可選關鍵字auto定義局部變數這一作法保持一致。
auto被解釋為一個自動存儲變數的關鍵字,也就是申明一塊臨時的變數內存。

5. 什麼是變數的存儲類型

量有4種存儲類型,分別是auto(自動型)、static(靜態型)、register(寄存器型)和extern(外部型)。在定義或說明一個變數時可以加上存儲類型關鍵字,以限定其存儲類別。
存儲類型決定了系統將在哪一個數據存儲區為變數分配存儲空間。

6. c語言中auto什麼意思

僅在語句塊內部使用,初始化可為任何錶達式,其特點是當執行流程進入該語句塊的時候初始化可為任何錶達式。

C語言中提供了存儲說明符auto、register、extern、static說明的四種存儲類別。四種存儲類別說明符有兩種存儲期:自動存儲期和靜態存儲期。

其中auto和register對應自動存儲期。具有自動存儲期的變數在進入聲明該變數的程序塊時被建立,它在該程序塊活動時存在,退出該程序塊時撤銷。

在函數內部定義的變數成為局部變數。在某些C語言教材中,局部變數稱為自動變數,這就與使用可選關鍵字auto定義局部變數這一作法保持一致。

(6)c語言的auto型變數是存儲在哪裡擴展閱讀:

C語言

auto被解釋為一個自動存儲變數的關鍵字,也就是申明一塊臨時的變數內存。

例如:

1 autodoublea=3.7;

表示a為一個自動存儲的臨時變數。

C++語言

C++ 98標准/C++03標准

同C語言的意思完全一樣:auto被解釋為一個自動存儲變數的關鍵字,也就是申明一塊臨時的變數內存。

C++ 11標准

在C++11標準的語法中,auto被定義為自動推斷變數的類型。例如:

auto x=5.2;//這里的x被auto推斷為double類型

map<int,int>m;

for(auto it=m.begin();//這里it被auto推斷為map<int,int>::iterator類型

it!=m.end();++it)

{

//....

}不過C++11的auto關鍵字時有一個限定條件,那就是必須給申明的變數賦予一個初始值,否則編譯器在編譯階段將會報錯。

參考資料:網路-auto

7. C語言中的關鍵字:auto是什麼意思怎麼用

C語言中提供了存儲說明符auto,register,extern,static說明的四種存儲類別。四種存儲類別說明符有兩種存儲期:自動存儲期和靜態存儲期。其中auto和register對應自動存儲期。具有自動存儲期的變數在進入聲明該變數的程序塊是被建立,它在該程序塊活動時存在,退出該程序塊時撤銷。
在函數內部定義的變數成為局部變數。在某些C語言教材中,局部變數稱為自動變數,這就與使用可選關鍵字a u t o定義局部變數這一作法保持一致。

8. C語言中變數的存儲類型有哪幾種,存儲方式哪幾種謝嘍

在C語言中,對變數的存儲類型說明有以下四種:

1、auto 自動變數

2、register 寄存器變數

3、extern 外部變數

4、static 靜態變數

所謂存儲類型是指變數佔用內存空間的方式,也稱為存儲方式。

變數的存儲方式可分為「靜態存儲」和「動態存儲」兩種。

1、靜態存儲變數通常是在變數定義時就在存儲單元並一直保持不變,直至整個程序結束。

2、動態存儲變數是在程序執行過程中,使用它時才分配存儲單元,使用完畢立即釋放。典型的例子是函數的形式參數,在函數定義時並不給形參分配存儲單元,只是在函數被調用時,才予以分配,調用函數完畢立即釋放。

如果一個函數被多次調用,則反復地分配、釋放形參變數的存儲單元。從以上分析可知,靜態存儲變數是一直存在的,而動態存儲變數則時而存在時而消失。

(8)c語言的auto型變數是存儲在哪裡擴展閱讀:

變數根據定義的位置的不同的生命周期,具有不同的作用域,作用域可分為6種:全局作用域,局部作用域,語句作用域,類作用域,命名空間作用域和文件作用域。

一、從作用域看:

1、全局變數具有全局作用域。全局變數只需在一個源文件中定義,就可以作用於所有的源文件。當然,其他不包含全局變數的定義的源文件需要用extern關鍵字再次聲明這個全局變數。

2、靜態局部變數具有局部作用域,它只被初始化一次,自從第一次被初始化直到程序運行結束一直存在,它和全局變數的區別在於全局變數對所有函數都是可見的,而靜態局部變數只對定義自己的函數體始終可見。

3、局部變數也只有局部作用域,它是自動對象(auto),它在程序運行期間不是一直存在,而是只在函數執行期間存在,函數的一次調用執行結束後,變數被撤銷,其所佔用的內存也被收回。

4、靜態全局變數也具有全局作用域,它與全局變數的區別在於如果程序包含多個文件的話,它作用於定義它文件里,不能作用到其他文件里,即被static關鍵字修飾過的變數具有文件作用域。這樣即使兩個不同的源文件都定義了相同名字的靜態全局變數,它們也是不同的變數。

二、從分配空間看:

全局變數,靜態局部變數,靜態全局變數都在靜態存儲區分配空間,而局部變數在棧里分配空間。

全局變數本身就是靜態存儲方式,靜態全局變數當然也是靜態存儲方式。這兩者在存儲方式上並無不同。這兩者的區別雖在於非靜態全局變數的作用域是整個源程序,當一個源程序由多個源文件組成時,非靜態的全局變數在各個源文件中都是有效的。

而靜態全局變數則限制了其作用域,即只在定義該變數的源文件內有效,在同一個源程序的其他源文件中不能使用它。由於靜態全局變數的作用域局限於一個源文件內,只能為該源文件內的函數公用,因此可以避免在其他源文件中引起錯誤。

1、靜態變數會放在程序的靜態數據存儲區(全局可見)中,這樣可以在下一次調用的時候還可以保持原來的賦值。這一點是它與堆棧變數和堆變數的區別。

2、變數用static告知編譯器,自己僅僅在變數的作用范圍內可見。這一點是它與全局變數的區別。

參考資料來源:網路-變數-存儲類型

9. 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。靜態變數只能夠初始化一次。

10. 求C++中auto型的詳細解釋

auto是一個C/C++語言存儲類型,僅在語句塊內部使用,初始化可為任何錶達式,其特點是當執行流程進入該語句塊的時候初始化可為任何錶達式。

在函數內部定義的變數成為局部變數。在某些C語言教材中,局部變數稱為自動變數,這就與使用可選關鍵字auto定義局部變數這一作法保持一致。

用來聲明自動變數。表明變數(自動)具有本地范圍,塊范圍的變數聲明(如for循環體內的變數聲明)默認為auto存儲類型。

(10)c語言的auto型變數是存儲在哪裡擴展閱讀:

C語言中提供了存儲說明符auto、register、extern、static說明的四種存儲類別。

四種存儲類別說明符有兩種存儲期:自動存儲期和靜態存儲期。其中auto和register對應自動存儲期。

具有自動存儲期的變數在進入聲明該變數的程序塊時被建立,它在該程序塊活動時存在,退出該程序塊時撤銷。

在函數內部定義的變數成為局部變數。在某些C語言教材中,局部變數稱為自動變數,這就與使用可選關鍵字auto定義局部變數這一作法保持一致。

熱點內容
ibatis生成sql 發布:2025-01-10 03:56:10 瀏覽:517
我的表姐迪克電腦密碼多少 發布:2025-01-10 03:27:40 瀏覽:766
主機訪問P 發布:2025-01-10 03:17:09 瀏覽:755
滴滴出行腳本 發布:2025-01-10 03:17:03 瀏覽:743
安卓扁口有線耳機哪個好 發布:2025-01-10 03:12:06 瀏覽:643
cubemx中的時鍾如何配置 發布:2025-01-10 03:09:51 瀏覽:726
電腦頁面怎麼設置密碼 發布:2025-01-10 03:05:41 瀏覽:878
mp4加密提取 發布:2025-01-10 03:05:39 瀏覽:838
我的世界伺服器地址後綴 發布:2025-01-10 02:55:40 瀏覽:522
百分30利潤怎麼演算法 發布:2025-01-10 02:47:26 瀏覽:964