1. 什麼叫做靜態存儲器它依靠什麼存儲信息
靜態存儲器是在計算機的運行過程中不需要刷新的半導體存儲器,一旦通電,就長期保存信息。它是依靠觸發器的兩個穩定狀態來存儲信息的。
http://www.sgrtvu.net.cn/jx_data/lg_data/czs/hbyy/xt1.htm
這里有基本答案````
把XT1改成XTX就可以看到相關的答案
2. 動態存儲區與靜態存儲區的區別
我理解吧,這個動態跟靜態主要是針對指針而言的。而且對於單個變數來說,動態跟靜態的概念體現的不是特別清楚,下面主要介紹數組吧。
如果你聲明一個數組int a[100],那麼這個數組的大小就是100,在內存中的位置也固定,如果後來發現數組不夠大,你就只能重新定義一個更大的數組,而不能直接改變數組a的大小。這就是靜態存儲。
如果你聲明一個指針int *p,一開始你想開辟一個100的數組,就寫p = new int[100],後面發現100不夠大,你可以先delete []p,把原來的空間釋放掉,然後讓p = new int[200],p就會指向一個大小為200的數組,這個數組的大小以及在內存中的位置可以根據需要不斷變化。這就是動態存儲。
3. 靜態存儲和動態存儲的區別
1. 靜態內存
靜態內存是指在程序開始運行時由編譯器分配的內存,它的分配是在程序開始編譯時完成的,不佔用CPU資源。
程序中的各種變數,在編譯時系統已經為其分配了所需的內存空間,當該變數在作用域內使用完畢時,系統會
自動釋放所佔用的內存空間。
變數的分配與釋放,都無須程序員自行考慮。
基本類型,數組
2. 動態內存
用戶無法確定空間大小,或者空間太大,棧上無法分配時,會採用動態內存分配。
處理器不工作,電腦什麼都做不了。
處理器的工作就是處理指令(多條指令就構成一個程序)。
處理器從內存中取指令集(程序)。
問題是如果斷電的話,內存中的指令就會丟失。因而內存歸類為「易失性」介質。
所以我們要把程序、數據存儲在不易失性的介質中,比如硬碟和光碟。
4. 在C語言中,什麼是動態存儲,什麼是靜態存儲
動態存儲是auto關鍵字,例如我們定義的int a; 默認就是動態存儲,具體應該是 auto int a;一般是用於函數參數,局部變數,超出作用域范圍會失效,變數產生在動態存儲區
靜態存儲時static關鍵字,例如,我們定義一個 static int a; 就是存儲在靜態存儲區,相當於一個全局變數
一樓的理解出現了問題
5. 全局/靜態存儲區內存的容量是無限的嗎
全局變數存儲在靜態存儲區
局部變數存儲在棧里
new,malloc分配的內存存儲在堆里
你可以這么理解:
全局變數是程序是整個程序都需要用到的,單獨分出一塊存儲區保存,該存儲區存儲的數據不清空
局部變數是函數退出時自動清空的,所以放在棧里做臨時存儲
new,malloc分配的內存需要自己手動申請自己手動釋放
6. 靜態存儲區和常量存儲區有什麼區別
一、靜態存儲區和常量存儲區的區別:
1、靜態存儲區,全局變數和靜態變數被分配到同一塊內存中;常量存儲區,這是一塊比較特殊的存儲區,他們裡面存放的是常量,是不允許修改的。
2、靜態存儲是main函數運行前分配內存並初始化;常量存儲是固化在執行文件上的數據。棧的方向和平台有關,一般來說,windows由高地址向低地址增長,linux相反,但linux演變出來的操作系統不排除有特殊情況。
3、常量存儲區裡面的數據是放在代碼段里的,不佔內存。靜態存儲區是在內存空間中的,在其所屬的類(或文件)中是全局的
二、靜態存儲區和常量存儲區介紹
1、靜態存儲區:所有的靜態對象,全局對象都於靜態存儲區分配,全局變數和靜態變數被分配到同一塊內存中,在以前的 C 語言中,全局變數又分為初始化的和未初始化的(初始化的全局變數和靜態變數在一塊區域,未初始化的全局變數與靜態變數在相鄰的另一塊區域,同時未被初始化的對象存儲區可以通過 void* 來訪問和操縱,程序結束後由系統自行釋放),在 C++ 裡面沒有這個區分了,他們共同佔用同一塊內存區。
2、常量存儲區:這是一塊比較特殊的存儲區,他們裡面存放的是常量,不允許修改
三、注意事項:常量字元串都存放在靜態存儲區,返回的是常量字元串的首地址.
7. 什麼是靜態存儲區和動態存儲區啊
1. 全局變數和靜態數據放在靜態存儲區,生命周期為從申請到程序退出。因此局部變數若定義為static,則存儲在靜態存儲區,否則存儲在函數的棧內,生命周期為本函數內。
2 動態存儲放自動變數和局部變數
8. 靜態存儲區
3個a不會沖突。
這里涉及幾個方面的知識:
1. 全局變數和靜態數據放在靜態存儲區,生命周期為從申請到程序退出。因此局部變數若定義為static,則存儲在靜態存儲區,否則存儲在函數的棧內,生命周期為本函數內。
2. 全局變數和局部變數的作用域,全局變數為從申請到整個程序結束,局部變數為從申請到本{}范圍內。
3. 局部變數對全局變數的屏蔽。若在本函數內定義的變數與全局變數同名,則將全局變數屏蔽,使用時為內部定義的局部變數。
4. 定義為static類型的局部變數,再次進入該函數,可以使用保留的結果。
下面的程序可以幫助理解:
#include<stdio.h>
int a = 1;
void fun()
{
static int a =3;
int b = 1;
printf("%d, %d\n", a, b);
a++;
b++;
}
int main()
{
printf("%d\n", a); /* global a */
static int a = 2;
printf("%d\n", a); /* static a in main */
fun(); /* static a in fun */
fun(); /* static a in fun */
return 0;
}
運行結果為:
1 /* 全局變數a */
2 /* 因為定義了main內的局部變數static int a,全局變數a被屏蔽,列印的為main局部變數a */
3, 1 /* 因為定義了fun內的局部變數static int a,全局變數a被屏蔽,列印的為fun內的局部變數a。 b是局部變數,列印為1 */
4, 1 /* 因為static的生命周期為整個程序,再次進入fun是a的值可以被保留,再次調用列印的值編程了3+1=4。b因為是在棧內,函數退出後空間被釋放,再次進入是重新申請的空間,結果仍為新初始化的值1 */
9. C++中 靜態存儲 是什麼意思
就是從程序開始到結束都不會變的量
作用就是:方便泥沼一個不變的量。呵呵。