作用域
1.**塊作用域
double
blocky
(double cleo)
//形式參量具有**塊作用域
2.函式原型作用域
3.檔案作用域
#include
int units=o;
//具有檔案作用域的變數(全域性變數)
intmain
(void
)
鏈結
1.具有**塊作用域或者函式原型作用域的變數具有:空鏈結(表示這些變數是由其定義所在的**塊或者函式原型所私有的);
2.具有檔案作用域的變數:可能有內部或者外部鏈結;(乙個具有外部鏈結的變數可以在乙個多檔案程式的任何地方使用;乙個具有內部鏈結的變數可以在檔案的任何地方使用;);
如下:
int g=5;
//無static,外部鏈結
static
int d=3;
//有,內部鏈結
intmain()
儲存時期自動變數
暫存器變數
具有**塊作用域的靜態變數
具有外部鏈結的靜態變數
extern
char cloo;
intmain
(void
)
int a=1;
//定義宣告
intmain
(void
)
具有內部鏈結的靜態變數static
int a=1;
int main (
void
)puts
("enter the values(q to quit);");
while
(i < max &&
scanf
("%1f"
,&p[i])==
1)++i;
printf
("這裡有你的%d條"
, number = i)
;for
(i =
0; i < number;i++
)puts
("done");
free
(p);
return0;
}
動態分配記憶體和變長陣列int n=5;
int m=6;
int ar2[n]
[m];
//變長陣列
int(
*p2)[6
];int(
*p3)
[m];
p2=(
int(*)
[6])
malloc
(n*6
*sizeof
(int))
;//n*6陣列
p3=(
int(*)
[m])
malloc
(n*m*
sizeof
(int))
;//n*m陣列
型別限定詞const
型別限定詞volatile
volatile
int locl;
//locl是乙個易變的位置
volatile
int* ploc;
//ploc是乙個易變的位置
型別限定詞restrictint ar[10]
;int
* restrict a=
(int*)
malloc(10
*sizeof
(int))
;int
* par=ar;
指標a是訪問malloc()分配的記憶體的唯一且初始的方式。
參考文獻
C語言,不得不重視的記憶體分配
儲存區的劃分 1 棧區 棧區儲存區域性變數,棧區的記憶體是由系統自動管理,系統開闢,系統 無需程式設計師管理.2 堆區 通過堆區記憶體分配函式,分配的空間都在堆區,堆區的最大特點 堆區的空間需要程式設計師手動管理,手動開闢,手動釋放.oc常用 3 常量區 對於字元常量,整型常量,浮點型常量,字串常量...
不得不說的故事 STL記憶體管理
1.概述 stl allocator是stl的記憶體管理器,也是最低調的部分之一,你可能使用了3年stl,但卻不知其為何物。stl標準如下介紹allocator the stl includes some low level mechanisms for allocating and dealloc...
關於動態記憶體不得不說的故事
首先,會用到molloc語句,其實好多小夥伴都已經看出來了,沒錯這就是堆!下面先來介紹一下棧和堆的概念 1 棧 stack 有時候也叫 堆疊 區域性變數所在的記憶體區域,函式可以呼叫,window系統預設大小為1m 2 堆 heap 動態記憶體開闢區域,大小接近1.5g,使用時需要注意釋放記憶體。使...