A. 當變數的存儲類型定義預設時,系統默認為變數的存儲類型為 c語言
當變數的存儲類型定義預設時,系統默認為變數的存儲類型為auto類型,分配在靜態區.
B. 局部變數的儲存類別是什麼變數,靜態局部變數和寄存器變數
C語言存儲類型有四種,分別是auto, extern, register, static。
1、局部變數,在沒有任何修飾的情況下,存儲類型為auto。
即定義局部變數int a;和auto int a;是相同的。
auto為預設類型。
2、靜態局部變數。
靜態局部變數是指有static修飾的局部變數,比如
static int a;
其存儲類型為static。
3、寄存器變數。
是指用register修飾的變數,比如:
register int a;
其存儲類型為register。
C. c語言的auto和static類型變數
auto型變數在函數被調用時,系統為其分配存儲空間。auto型變數存儲在內存的動態存儲區,函數執行後釋放存儲空間。只有函數的局部變數才能定義為auto類型。在定義局部變數時,如果預設存儲類型,則系統將變數當做auto型處理,即默認為auto型變數。
static型變數存放在內存的靜態存儲區,在編譯時為其分配存儲空間並初始化。若沒有賦值,則默認為0。在函數內定義的靜態變數為靜態局部變數,在函數外定義的靜態變數為靜態全局變數。static型局部變數不因函數結束而消失,當再次進入函數時,變數是上一次函數運行結束後的值。無論什麼情況下,都不能被其它函數情況下調用。
D. c語言中局部變數預設的存儲類型是什麼
應該是 auto 自動變數。
局部變數預設是 自動變數
作用文件部位的預設是 靜態變數
E. c語言中,局部變數默認的存儲類型是
應該是auto自動變數。
局部變數預設是自動變數auto,作用文件部位的預設是靜態變數static
F. 指針作參數不會改變指針的地址
當然會輸出a了。
--------------------------------------------------
你自定義的函數Point(char *p){p+=3} 中的形式參數p與main()中的定義的變數char *p雖然是同樣類型同樣名稱的變數,但兩者是截然不同的,它們都是局部變數,只在定義自己的函數中有效。其實變數除了有類型之分,如int ,char ,float之分以外,還有作用域的分別。
point函數中的p在執行完之後,就會釋放存儲空間,它是自動類型的變數,它僅在調用它的時候才為其分配存儲空間,並且只在定義它的函數內有效,當函數調用結束後,變數空間被釋放。main函數中的p也是自動變數,但是它的作用范圍在整個main函數內,printf的函數調用的時候就是輸出它的值。
關於變數的存儲類型和作用域的資料總結如下:
-------------------------------------------------
C語言變數的存儲類型有如下四種:
自動型(auto);
靜態型(static);
外部行(extern);
寄存器型(register);
另外,對變數的作用范圍(即作用域),還有一個規定,也就是說變數定義好之後。按照變數分為局部變數和全局變數。局部變數的作用域僅在該變數的函數內有效,其他位置不能訪問它;全局變數說明該變數在定義位置起到整個源程序結束的范圍內的各個函數都可以訪問。
【1】局部變數的存儲類型有3種:自動變數,靜態局部變數和寄存器變數。
1自動變數:在函數的內部或復合語句中定義的變數以及型參,如果不專門指定其存儲類型,都是自動地分配存儲空間。自動變數為預設類型,我們用到的大部分局部變數都是沒有聲明存儲類型,實際上都是自動類型的變數(auto)
2靜態局部變數:
如果希望在函數調用結束後仍然保留函數中定義的局部變數的值,即其佔用的存儲單元不釋放,在下一次調用該函數時,改變數能夠保持連續性,則需要將該局部變數定義為靜態局部變數,用關鍵字static進行聲明。
一般形式:static 類型說明符 變數名表;
3寄存器變數:
一般情況下,變數的值都是存放在內存中的。為了提高程序的運行速度,可將使用十分頻繁的局部變數聲明為寄存器變數用關鍵字register。在每一種計算機的cpu內都包含若干個通用寄存器,由於cpu對寄存器中數據的存取速度要遠遠快於內存中數據的存取速度,所以c語言特別引入了寄存器變數。
注意的幾點:(1) 寄存器變數是局部變數,它的生命周期和自動變數一樣。(2)只能將自動變數和形式參數定義為寄存器變數,而靜態局部變數不可以定義為寄存器變數,因為一個變數不能既放在靜態存儲區又放在寄存器中。(3)一般數據類型為long double float 的變數不能定義為寄存器類型,因為這些數據的長度超過了寄存器本身的長度。通常寄存器是16位的。
【2】全局變數及其存儲類型
前面講到在函數內部定義的變數稱為局部變數,那麼在函數外部定義的變數就稱為全局變數,它的有效范圍是從定義變數的位置開始到本源程序結束。
全局變數的存儲類型有兩種:外部變數和靜態變數。
(1)外部變數
沒有說明為static 的全局變數,其存儲類型都是外部的,統稱為外部變數,編譯時將外部變數分配在靜態存儲區中。
一般形式:extern 類型說明符 變數名表;
其中extern可以省略,是一種預設格式。當我們定義了外部變數之後,隨後該程序的所有函數都可以對它們進行存期和修改。外部變數的值是永久保留的,存放在用戶的靜態存儲區中,這與自動變數截然不同。
(2)靜態外部變數
如果希望一個源程序文件中定義的全局變數只在本源程序文件內有效,而其他的源程序文件不允許訪問,則可以在定義全局變數的時候加上關鍵字 static
一般形式: static 類型說明符 變數名表;
說明:(1)靜態全局變數的定義仍然是在函數的外部,作用域為定義它的源程序文件。由此提供了把數據隱藏起來的一種手段,使得外部源程序文件不能訪問。
(2)靜態全局變數與其他源程序文件的同名變數互不相干,避免了不同源程序文件中同名全局變數的沖突。
G. c語言中,局部變數默認的存儲類型是
存儲類型是自動類型 外部、靜態和寄存器類型都需要聲明的 默認的就是自動類型