1樓:禰歆美查晨
函式中未指定儲存類別的區域性變數,其隱含的儲存類別為自動儲存類別。
函式中的區域性變數,如果不專門宣告為static儲存類別,都是動態的分配儲存空間的,資料儲存在動態儲存區中。
這類變數叫做自動變數,自動變數可以用關鍵字auto作為儲存類別的宣告,實際上關鍵字auto是可以省略的(一般都是不寫的),不寫則自動隱含為「自動儲存類別「。
擴充套件資料:預設情況下,在**塊內宣告的變數都是自動變數,但亦可用自動變數的關鍵字auto明確標識儲存類;而如若使用register(而非auto)儲存類標識**塊內的變數,編譯器。
就會將變數快取於處理器內的暫存器。
中,此種情況下不能對該變數或其成員變數使用引用操作符&以獲取其位址,因為&只能獲取記憶體空間中的位址。
除此以外,由於暫存器的數量及其所能儲存的資料型別。
受硬體限制而可能無法儲存指定變數,編譯器可以忽略宣告內的register關鍵字。對於乙個未初始化的自動變數來說,在為其賦值之前其值都為undefined(未定義)。
在c++中,如諺語「資源獲取即初始化」(resource
acquisition
isinitialization,常縮寫為raii)所述,自動變數的建構函式。
在程式執行至宣告部分的時候才會被呼叫,而當程式執行至所給的程式塊末端的時候則呼叫解構函式。
自動變數。
2樓:中慧美偉水
在函式中未指定儲存類別的區域性變數,其隱含的儲存類別是什麼?
a、靜態(c、自動(auto)
d、暫存器(register)
靜態static
3樓:惠企百科
函式中未指定儲存類別的區域性陪襪變數,其隱含的儲存類別為自動儲存類別。
函式中的區域性變數,如果不專門宣告為static儲存類別,都是動態的分配儲存空間的,數租唯據儲存在動態儲存區中。
這類變數叫做自動變數,自動變數可以用關鍵字auto作為儲存類別的宣告,實際上關鍵字auto是可以省略的(一般都是不寫的),不寫則自動隱含為「自動儲存類別「。
4樓:月庭竹影
不怎麼明白你的意思,像main()就預設為void main(void)
如果乙個變數在整個程式執行期間都存在,但是僅在說明他的函式內事可見的,這個變數的儲存型別應該被說明
5樓:小新科普生活
這個變數的儲存型別應該被說明為「靜態變數」。
對於靜態全域性變數來說,針對某一原始檔的以static宣告的檔案級變數與函式的作用域只限於檔案內(只在檔案內可見),也即「內部連線」,因而可以用來限定變數的作用域。
靜態變數也可以用於儲存常數。具體來說,靜態變數(全域性變數及組合語言裡定義的符號亦同)可用const,constant或final(根據語言決定)等關鍵字標識,這時其值就會在編譯時設定,並且無法在執行時改變。
6樓:
這個變數的儲存型別應該被說明為。
全域性變數。
在c語言中,全域性變數的儲存類別是?
7樓:水果山獼猴桃
全域性變數的儲存類別是靜態儲存區。
變數分為區域性與全域性,區域性變數又可稱之為內部變數。由某物件或某個函式所建立的變數通常都是區域性變數,只能被內部引用,而無法被其它物件或函式引用。
全域性變數既可以是某物件函式建立,也可以是在本程式任何地方建立。全域性變數是可以被本程式所有物件或函式引用。
由下圖可以看出a、b、x、y 都是在函式外部定義的外部變數,都是全域性變數。但x,y 定義在函式f1之後,而在f1內又無對x,y的說明,所以它們在f1內無效。 a,b定義在源程式最前面,因此在f1,f2及main內不加說明也可使用。
全域性變數是使用相同的記憶體塊在整個類中儲存乙個值全域性變數extern與static,extern在其他源程式中也可以使用;static只能在本程式中使用。
8樓:聽不清啊
從變數的作用域(即從空間)角度來分,可以分為全域性變數和區域性變數。
全域性變數全部存放在靜態儲存區中,在程式開始執行時給全域性變數分配儲存區,程式執行完畢就釋放。
從另乙個角度,從變數值存在的作時間(即生存期)角度來分,可以分為靜態儲存方式和動態儲存方式。
靜態儲存方式:是指在程式執行期間分配固定的儲存空間的方式。
動態儲存方式:是在程式執行期間根據需要進行動態的分配儲存空間的方式。
使用者儲存空間可以分為三個部分:
1) 程式區;2) 靜態儲存區;3) 動態儲存區;
全域性變數全部存放在靜態儲存區,在程式開始執行時給全域性變數分配儲存區,程式行完畢就釋放。在程式執行過程中它們佔據固定的儲存單元,而不動態地進行分配和釋放;
動態儲存區存放以下資料:
1) 函式形式引數;
2) 自動變數(未加static宣告的區域性變數);
3) 函式呼叫實的現場保護和返回位址;
對以上這些資料,在函式開始呼叫時分配動態儲存空間,函式結束時釋放這些空間。
9樓:網友
只要定義在函式外面就可以了。
什麼型別都可以。
定義時和定義其他變數是一樣 的。
把他放在標頭檔案下面。
10樓:明過
譚浩強書中為 靜態儲存區中。
c語言記憶體中是否存在乙個區域,儲存著變數的符號,變數的型別和變數的首位址?
11樓:網友
c語言是乙個複雜的體系。需要很長時間才能研究透徹,其實我覺得這種說法不完備,不應該說是某乙個區域之類的。
通常不是這樣,但是在編譯時,將該記憶體作為某種應用程式使用。一種指標型別的變數,其內容是儲存在執行時可以更改的內容的「第乙個位址」。可憐的rtti系統提供執行時型別標記。
指令碼語言確實儲存了變數名稱和函式名的列表,以及型別資訊,它們的變數通常不是基本型別,函式也不是本機函式。
當然,有時除錯方便,編譯器將在編譯時將變數符號的位址關係寫到可執行檔案。因此,如果出現錯誤,除錯將是方便的。例如,當gcc編譯時,- g引數是可以的。
但即使是這樣,也不一定所有的符號都會被記錄下來,而且在編譯過程中會優化一些變數,而你將無法找到它們。
對於一臺計算機,它的世界沒有變數,常數。他生活在乙個簡單的世界中,它知道儲存空間、暫存器、記憶體等具有位址或可定址的(可以找到),通過執行命令來運算元據。每天按順序執行指令,指令通常會告訴它到某個位址資料移動,或將資料新增到減號、位址或更改當前執行的指令。
高階語言定義了變數、常量、結構,甚至物件。計算機不知道它們,但它似乎並不存在於計算機中,但它可能是記憶體空間或指令的一部分。為了讓計算機理解高階語言的概念,編譯器被髮明來幫助翻譯工作。
12樓:小莋
c語言標準不應該說編譯的東西是什麼,或者可以說,即使編譯結果包含問題中的資訊,也無法按照c語言標準獲得這些資訊。
雖然一般的編譯器一般不儲存資訊,但為了除錯或效能分析,常常會將類似的資訊(如除錯符號)儲存在可執行檔案或其他除錯檔案中,這樣您可以在偵錯程式中看到與識別符號值對應的資訊。
在編譯c / c++源**,有沒有這樣的東西作為「變數名」或「變數」。一切都被轉換為實際的位址(或/ ebp偏移到堆疊的頂部)。這個轉換的步驟是在編譯過程中完成的。
當然,有時為了便於除錯,編譯器在編譯時將變數符號的位址關係寫入可執行檔案。這樣,如果有問題,除錯會更方便。例如,當編譯gcc時,g引數就可以了。
然而,即使如此,並不是所有的符號都會被記錄下來,一些變數在編譯過程中會被優化,這是不可能找到的。
如果您使用gcc的g編譯,它將帶有符號符號的名稱,但這通常是乙個全域性變數和乙個全域性函式。我不記得函式的內部或內部。
變數型別
在組合語言或機器**中編譯程式之後,變數已經是處理器可以處理的型別。
嚴格地說,原始型別的資訊大部分時間都丟失了。
例如,size_t,成為int,除非你能從該元件的**,這是size_t。
變數的第乙個位址
不是所有的變數都有第乙個位址,對吧?
如果它是結構的乙個成員,則由指標訪問它,它將以位址的方式表示。
如果它是乙個簡單的型別變數,它可能直接包含在機器**中,並且不再存在位址。
例如,int = 99;
ASP未發現資料來源名稱並且未指定預設驅動程式
這個要看虛擬主機抄上是否正確配bai置好了資料庫,你的可能是沒有配好,du動態頁zhi面需要配置資料庫dao的。建立一個 系統dsn 看看。因為使用者dsn只能用於當前使用者和當前機器 asp 錯誤 80004005 未發現資料來源名稱並且未指定預設驅動程式!30 asp連線access資料庫失敗,...
win10印表機顯示未指定,win10印表機顯示未指定是怎麼回事?
可能是電腦沒有設定啟用列印服務。解決具體步驟 1 將印表機通過usb資料線與電腦u口進行連線。檢視印表機連線狀態是否正常,右鍵選單中選擇 控制面板 項。2 開啟的 控制面板 介面中,點選 硬體和聲音 欄目中的 檢視裝置和印表機 3 開啟 裝置和印表機 視窗,從此介面中就可以找到 未指定 的裝置,此裝...
用C語言編寫一個在陣列中刪除指定值函式
include include value 指定值。arr 陣列。arr len 陣列長度的地址 指標 int delete node const int value,int arr,int arr len arr len elseint main int arr len sizeof arr si...