c語言中數據存儲分為以下幾個部分,每個部分存儲不同的內容:
1、棧區:存放函數的參數值,局部變數的值等。
2、堆區 :存儲動態生成的對象,一般由程序員分配釋放。
3、靜態區或者全局區: 存儲全局變數和靜態變數。
4、文字常量區 :存儲常量字元串。
5、代碼區 : 存儲函數體的2進制代碼。
2. c語言中變數值在計算機存儲單元里以什麼方式存儲
可以先說說談論哪些的類型么
~
3. C語言存儲全局變數
先是 最外面,也就是全局變數的地方 定義一個全局變數但不賦值,
int a;
然後在通過函數直接調用就好了
如:
int a;
void main ()
{
scanf()...
}
4. C語言中變數存儲類型有哪些
自動 靜態 寄存 易失
一說是
自動(auto)、靜態(static)、寄存器的(register)和外部的(extern)
然而某認為extern是用來對編譯器進行聲明變數的,而不是定義。
5. c語言變數儲存類型深圳
auto 是自動變數是動態地分配存儲空間的,數據在動態存儲區,函數執行完後自動釋放
實際上 auto 可以省略的,auto不寫則隱含自動變數
auto Int b,c=int b,c
static是靜態變數 即在函數調用後不消失而保留原值,其佔用內存不釋放,其值就是上次調用後的結果。
#include<stdio.h>
int fac(int n);
void main()
{ int i;
for(i=0;i<=5;i++)
printf("%d!=%d\n",i,fac(i));
}
int fac(int n)
{static int f=1;
f=f*n;
return(f);
}
結果為1!=1
2!=2
3!=6
4!=24
5!=120
要輸5次
還有register變數 和extern 變數申明
⊕
6. c語言中變數是怎樣存儲的
這個依照你的變數或者對象的申明位置和方式不同而不同的。
一般來說,全局變數,靜態變數,首先分配,分配在靜態存儲空間。
局部變數,在申明的是後分配,分配在棧上。作用域結束後系統會自動回收。
動態申請的空間,在執行分配函數時分配,分配在堆上,又程序員自己寫釋放代碼手動釋放空間。
7. c語言變數如何存儲在內存中
在系統為一個程序分配的空間中,分成許多段,比如有代碼段,存放程序可執行代碼,有數據段,可以分配變數,有常量段,專門存放常量,是只讀的。常量變數可以位於數據段中,仍然是變數,只是程序沒有改動許可權。在程序執行到main之前,系統負責將常量區存儲的常量賦值給常量。
8. C語言 變數的存儲
realloc()來給數組重新分配空間.
大於你預先給定的長度時,對數組realloc()一次,增加長度就可以.
查查realloc()的參數,以及具體用法吧.
書上都有.我就不舉例了!!!!!!!!
9. c語言變數存儲
在函數體中定義的變數通常是在棧上,用malloc,
calloc,
realloc等分配內存的函數分配得到的就是在堆上。
在函數外部定義的變數(全局變數或靜態外部變數)和在函數內部定義的static變數,其生存期就是程序運行的全過程,這些變數被存儲在數據段(datasegment)中。
在函數內部定義的auto變數(沒有用關鍵字static定義的變數)的生存期從程序開始執行其所在的程序塊代碼時開始,到程序離開該程序塊時為止。作為函數參數的變數只在調用該函數期間存在。這些變數被存儲在棧(stack)中。
10. C語言中變數的存儲類型有哪幾種,存儲方式哪幾種謝嘍
在C語言中,對變數的存儲類型說明有以下四種:
1、auto 自動變數
2、register 寄存器變數
3、extern 外部變數
4、static 靜態變數
所謂存儲類型是指變數佔用內存空間的方式,也稱為存儲方式。
變數的存儲方式可分為「靜態存儲」和「動態存儲」兩種。
1、靜態存儲變數通常是在變數定義時就在存儲單元並一直保持不變,直至整個程序結束。
2、動態存儲變數是在程序執行過程中,使用它時才分配存儲單元,使用完畢立即釋放。典型的例子是函數的形式參數,在函數定義時並不給形參分配存儲單元,只是在函數被調用時,才予以分配,調用函數完畢立即釋放。
如果一個函數被多次調用,則反復地分配、釋放形參變數的存儲單元。從以上分析可知,靜態存儲變數是一直存在的,而動態存儲變數則時而存在時而消失。
(10)c語言變數儲存擴展閱讀:
變數根據定義的位置的不同的生命周期,具有不同的作用域,作用域可分為6種:全局作用域,局部作用域,語句作用域,類作用域,命名空間作用域和文件作用域。
一、從作用域看:
1、全局變數具有全局作用域。全局變數只需在一個源文件中定義,就可以作用於所有的源文件。當然,其他不包含全局變數的定義的源文件需要用extern關鍵字再次聲明這個全局變數。
2、靜態局部變數具有局部作用域,它只被初始化一次,自從第一次被初始化直到程序運行結束一直存在,它和全局變數的區別在於全局變數對所有函數都是可見的,而靜態局部變數只對定義自己的函數體始終可見。
3、局部變數也只有局部作用域,它是自動對象(auto),它在程序運行期間不是一直存在,而是只在函數執行期間存在,函數的一次調用執行結束後,變數被撤銷,其所佔用的內存也被收回。
4、靜態全局變數也具有全局作用域,它與全局變數的區別在於如果程序包含多個文件的話,它作用於定義它文件里,不能作用到其他文件里,即被static關鍵字修飾過的變數具有文件作用域。這樣即使兩個不同的源文件都定義了相同名字的靜態全局變數,它們也是不同的變數。
二、從分配空間看:
全局變數,靜態局部變數,靜態全局變數都在靜態存儲區分配空間,而局部變數在棧里分配空間。
全局變數本身就是靜態存儲方式,靜態全局變數當然也是靜態存儲方式。這兩者在存儲方式上並無不同。這兩者的區別雖在於非靜態全局變數的作用域是整個源程序,當一個源程序由多個源文件組成時,非靜態的全局變數在各個源文件中都是有效的。
而靜態全局變數則限制了其作用域,即只在定義該變數的源文件內有效,在同一個源程序的其他源文件中不能使用它。由於靜態全局變數的作用域局限於一個源文件內,只能為該源文件內的函數公用,因此可以避免在其他源文件中引起錯誤。
1、靜態變數會放在程序的靜態數據存儲區(全局可見)中,這樣可以在下一次調用的時候還可以保持原來的賦值。這一點是它與堆棧變數和堆變數的區別。
2、變數用static告知編譯器,自己僅僅在變數的作用范圍內可見。這一點是它與全局變數的區別。
參考資料來源:網路-變數-存儲類型