函式指標
記憶體申請與釋放
陣列指標與指標陣列
列舉型別
int
const num =
100;
intconst
static num2 =
200;
//num = 10; 此句話error
int a=10;
int b=11;
int c=12;
//靜態指標
intconst
*pa =
&a;//*pa是乙個常量,指向位址的值不能變化
int*
const pb =
&b;//pb是乙個常量,指標無法更改指向的位址,但可以更改指向位址裡的值
intconst
*const pc =
&c;//*pc和pc都是常量,都無法更改
typedef
int*
(*pfunc)
(int
,char*)
;int
*ccstr
(int n,
char
* str)
intmain()
malloc與calloc功能相同,函式入口引數不同,calloc方便閱讀些。函式反饋的變數都是viod*型,所以需要型別轉換。
int
* p;
int size =10;
//p = (int *)malloc(size * sizeof(int)); //申請記憶體空間
p =(int*)
calloc
(size,
sizeof
(int))
;//申請記憶體空間
p =realloc
(p,100
*sizeof
(int))
;//重新分配p的記憶體空間
if(p ==
null
)free
(p);
int
** pint;
pint =
(int**
)malloc
(sizeof
(int*)
*size);if
(pint ==
null
)//申請總的後需要給各個部分申請位址
for(i =
0; i < size; i++
)//free時候先釋放小的在釋放總的
指標位址加1,則輸出陣列的下乙個值,位址變化為1個int,即一次加1,變化4個位元組。
int num2[2]
[5]=
;int
(*p2)[5
];p2 =
&num2;
printf
("%d \n"
, p2++);
printf
("%d \n"
, p2++);
printf
("%d \n"
, p2++
);
列印出p2位址變化為:
(*p2)[4]表示陣列指標(也稱行指標),一次++增加了20個位元組,由於int是4位元組,則增加了5個int,也就是說執行p+1時,p要跨過n個整型資料的長度。
*p1[4]表示指標陣列,相當於是乙個二維指標或者二維陣列。
(*p2)[4]表示陣列指標(也稱行指標),指向乙個整型的一維陣列,這個一維陣列的長度是n,也可以說是p的步長。也就是說執行p+1時,p要跨過n個整型資料的長度。
enum
int;
//相當於
int num1;
int num2;
int num3;
typedef
int color;
enum color
;enum color num;
num =0;
switch
(num)
使用列舉的好處顯而易見,switch case語句只能使用常量,如果用const定義的靜態靜態變數,雖然值不會改變,但是也屬於變數,不可用於case,但enum定義的是常量,可用於case。 C 語言之 const static小結
我們都知道有const 修飾時,就意味著是唯讀不可修改的。1 欲阻止乙個變數被改變,可以使用 const 關鍵字 2 對指標來說,可以指定指標本身為 const 也可以指定指標所指向的資料為 const 或二者同時指定為 const 3 在乙個函式宣告中,const 可以修飾形參,表明它是乙個輸入引...
C 疑難問題 const static
關鍵字const 指定用其宣告的內容保持不變 1.標識變數 代替 define來宣告常量 const doble pi 3.14159 2.標識方法 標識類方法,可以防止方法修改類中不可變的資料成員 class.h class a class.cpp int getvalue const 3.con...
c語言010 指標
include int main 注意 p前面的型別決定了取位址的能力。如果是int型別的,就說明在32平台下可以取址能力是4個位元組。2 指標的本質就是儲存乙個位址,在32位的系統上,所有程式的記憶體位址都用4個位元組表示,所以不管是什麼型別的指標。指標大小都佔4個位元組。稱之為間接引用,表示根據...