1樓:璩月靈森虹
在函式內部定義的變數成為區域性變數。在某些c語言教材中,區域性變數稱為自動變數,這就與使用可選關鍵字aut
o定義區域性變數這一作法保持一致。區域性變數僅由其被定義的模組內部的語句所訪問。換言之,區域性變數在自己的**模組之外是不可知的。切記:模組以左花
括號開始,以右花括號結束。
對於區域性變數,要了解的最重要的東西是:它們僅存在於被定義的當前執行**塊中,即區域性變數在進入模組時生成,在退出模組時消亡。
定義區域性變數的最常見的**塊是函式。
這個區域又是一個模組,裡面num的對外部num的不影響
2樓:
語言中包括了關鍵字auto,它可用於定義區域性變數。但自從所有的非全域性變數的預設值假定為auto以來,auto就幾乎很少使用了。
在c或者以前的c++中,auto關鍵字基本上可以被無視:比如這個區域性變數:inta=
100;auto
inta
=100;並沒有什麼區別。
但是在vc2010中,auto已經有了新的含義,它可以對型別進行推斷使得我們在使用的時候可以這樣autoa=
100;那麼a就是int型別,初始值為100。
3樓:奕凱澤拱淳
這裡面的num是個區域性變數阿,
這裡所有的num
看成是另一個變數就ok
拉。。。。只在此函式中有效
每次呼叫函式
重新分配空間
關於c語言auto變數和static變數區別
4樓:匿名使用者
一、主體不同
1、auto變數:是一個c/c++語言儲存型別,僅在語句塊內部使用。
2、static變數:在計算機程式設計領域指在程式執行前系統就為之靜態分配儲存空間的一類變數。
二、作用域範圍不同
1、auto變數:初始化可為任何表示式,其特點是當執行流程進入該語句塊的時候初始化可為任何表示式。
2、static變數:針對某一原始檔的以static宣告的檔案級變數與函式的作用域只限於檔案內(只在檔案內可見),也即「內部連線」,因而可以用來限定變數的作用域。
三、特點不同
1、auto變數:具有自動儲存期的變數在進入宣告該變數的程式塊時被建立,它在該程式塊活動時存在,退出該程式塊時撤銷。
2、static變數:在函式內以static宣告的變數雖然與自動區域性變數的作用域相同,但儲存空間是以靜態分配而非預設的自動分配方式獲取的,因而儲存空間所在區域不同。
5樓:倉鼠說籃球
自動變數(auto變數)和靜態變數(static變數)主要有以下幾點區別:
1、static變數存放在靜態儲存區,在程式整個執行期間都不釋放;而auto變數存放在動態儲存區,隨著生命週期的結束而立即釋放。
2、static變數只賦值一次,以後就不用賦值;而auto變數在函式每呼叫一次都要賦初值。
3、如果使用者不對static變數賦初值,則預設為0或'\0';而auto變數為不確定值。
6樓:張震是
1、儲存部位不同
auto變數會儲存在堆疊裡面,每次定義的時候會分配儲存區,而在用完釋放的時候會收回儲存區。
static變數會被儲存在靜態儲存區。
2、初始化不同
初始化的時候,如果不賦初值,auto變數是不確定的。c預設的就是auto型別。static變數宣告的時候,如果不初始化,編譯器會自動初始化。
3、保留的資料不同
static 變數,每次使用的時候會保留上一次的值,即使重新定義,也不會改變static 變數的值。而auto變數不會。
擴充套件資料
static變數用途
1、作常量使用
靜態變數也可以用於儲存常數。具體來說,靜態變數(全域性變數及組合語言裡定義的符號亦同)可用const,constant或final(根據語言決定)等關鍵字標識,這時其值就會在編譯時設定,並且無法在執行時改變。
編譯器通常將靜態常量與文字一起置於目標檔案的文字區域,而非常量初始化資料則置於資料區;而如若有需要,有些編譯器還可選擇為其開闢專用區;為防止常數變數被錯誤的指標寫入覆蓋,亦可在這塊區域啟用記憶體保護機制。
2、c族語言中的實現
在c語言及由其派生出的c++與objective-c等程式語言中,「static」是用於控制變數的生命週期和連線方式(即其作用域,亦即可見性)的保留字。
確切來說,正如c族語言中的extern,auto與register這些保留字一樣,static也是一種儲存類(此處的「類」與面嚮物件語言的「類」的定義不同)標識。
每個變數與函式都有以上的一種儲存類標識,如果在宣告中沒有明確標識其儲存類,編譯時就會根據上下文來選擇其預設儲存類,如在原始檔裡的所有檔案級變數對應的預設儲存類是extern,而在函式體內的變數對應的則是auto,各儲存類的屬性如下表所列。
7樓:
auto變數儲存在動態儲存區,static變數儲存在靜態儲存區,主要區別是:在多次使用被調函式中,每執行一次,auto的值都保留原始值(與你的程式執行沒關係),但是static卻和呼叫函式的具體過程有關,即保留上次的值,兩者在主函式中的功能是一樣的。
8樓:匿名使用者
static 是靜態變數 就是在程序執行整個過程中一直存在的 ,函式裡的 static變數可以儲存上次執行時的值 在下次呼叫時使用
函式外的 static 變數只在本檔案中可以使用 ,在同時編譯的其他檔案中是不能訪問的
auto 變數就是函式執行時存在 函式結束了變數就不存在了,下次再執行到這裡,再次使用,結束時再次失效
一時理解不了沒關係,慢慢會理解的。
9樓:匿名使用者
auto變數,預設的型別,一般宣告時不用加,這種變數超出作用域就消失了,不能再用了,
static變數可以和全域性變數有同樣的生存期。
10樓:
auto是自動儲存 生存週期很短 static為靜態宣告 生存週期一直存在
11樓:說歷史的大白
static是以前次的結果為基礎的
12樓:匿名使用者
在這兩段程式中,在第一個中,當主函式每次呼叫addone()函式時,所定義的變數ia的初始值都是1;而在第二個中,主函式第一次呼叫addone()函式時,ia=1,當第二次呼叫時,ia的初始值就是上一次執行addone()函式後ia的值了;
static 是靜態變數,其作用域是全域性。
auto變數,作用域只是當前函式。
c語言auto定義變數
13樓:
這裡面的num是個區域性變數阿, 這裡所有的num
看成是另一個變數就ok 拉。。。。只在此函式中有效 每次呼叫函式 重新分配空間
14樓:
結果就是這樣啊
第一次迴圈
for(i=0;i<3;i++)
}後面的類推
15樓:
在函式內部定義的變數成為區域性變數。在某些c語言教材中,區域性變數稱為自動變數,這就與使用可選關鍵字a u t o定義區域性變數這一作法保持一致。區域性變數僅由其被定義的模組內部的語句所訪問。
換言之,區域性變數在自己的**模組之外是不可知的。切記:模組以左花
括號開始,以右花括號結束。
對於區域性變數,要了解的最重要的東西是:它們僅存在於被定義的當前執行**塊中,即區域性變數在進入模組時生成,在退出模組時消亡。
定義區域性變數的最常見的**塊是函式。
這個區域又是一個模組,裡面num的對外部num的不影響
c語言中的關鍵字:auto是什麼意思?怎麼用
16樓:程式設計師的每一天
c語言經典例子之使用auto關鍵字定義變數的用法
17樓:匿名使用者
c語言中提供了儲存說明符auto,register,extern,static說明的四種儲存類別。四種儲存類別說明符有兩種儲存期:自動儲存期和靜態儲存期。
其中auto和register對應自動儲存期。具有自動儲存期的變數在進入宣告該變數的程式塊是被建立,它在該程式塊活動時存在,退出該程式塊時撤銷。
在函式內部定義的變數成為區域性變數。在某些c語言教材中,區域性變數稱為自動變數,這就與使用可選關鍵字a u t o定義區域性變數這一作法保持一致。
18樓:匿名使用者
1auto
這個關鍵字用於宣告變數的生存期為自動,即將不在任何類、結構、列舉、聯合和函式中定義的變數視為全域性變數,而在函式中定義的變數視為區域性變數。這個關鍵字不怎麼多寫,因為所有的變數預設就是auto
19樓:匿名使用者
基本不用,不用考慮。
C語言和彙編怎樣引用對方定義的變數
c中要使用匯編裡面函式的話 需要在彙編裡面使用export 匯出函式標號 c中加extern 彙編要使用c裡面的函式的話 需要在彙編裡使用import 匯入外部標號 彙編加global定義,加 區別。比如c中的定義是num1,彙編中就是 num1,兩者是等同的。對了,你沒說你的處理器和開發環境是什麼...
c語言函式指標定義,C語言函式指標定義
韌勁 函式指標 在程式執行中,函式 是程式的演算法指令部分,它們和陣列一樣也佔用儲存空間,都有相應的地址。可以使用指標變數指向陣列的首地址,也可以使用指標變數指向函式 的首地址,指向函式 首地址的指標變數稱為函式指標。1 函式指標定義 函式型別 指標變數名 形參列表 函式型別 說明函式的返回型別,由...
關於C語言變數儲存型別的問題
聽雨晨安 1開始已經定義了全域性變數i,而main函式中又有個i的宣告,有什麼作用呢?答 如果重複定義了i變數,那麼對於內層的塊,有效的是 main函式中的i 2.然後在new函式中傳入了i的值,全域性變數在這裡起作用?和1類似,全域性變數i的作用域為程式執行到程式結束,並且對於每個塊,都有效。大致...