陣列: 相同資料型別的集合,並且是一塊連續的記憶體單元
陣列聚合型別:初始化只有一次。
arr1[5] 如果陣列只進行了宣告,那麼初值為隨機值!!
arr2[5]= 如果區域性初始化,其他元素值為0!! 1 2 3 0 0
arr3[5]={} 0 0 0 0 0
arr陣列名代表陣列的首位址;
二維陣列
int brr2[3][3] = ;
int brr3[3][3] = ;//預設值為0
int brr4[3] = ;//二維陣列定義的時候可以省略行
取別 :sizeof 包含\0; strlen 遇到\0停止
int len = sizeof(arr)/sizeof(arr[0]); //計算陣列長度
char crr[5] = ; sizeof(crr)/sizeof(crr[0]) 5
char crr2 = ; sizeof(crr2)/sizeof(crr2[0]) 5
char crr5 = "abcde";//預設加\0 sizeof(crr5)/sizeof(crr5[0]) 6
sizeof strlen
char str[100] = "abcdef"; 100 6
char str2 = "abcdef"; 7 6
char *str3 = "abcdef"; 4 6
char str4[100] = "abcdef\0xyz"; 100 6
char str5 = "abcdef\0xyz"; 11 6
char *str6 = "abcdef\0xyz"; 4 6
char str7 = "abcdef\n\0"; 9 7
char *str8 = "abcdef\n\0"; 4 7
指標
指標是程式資料在記憶體中的位址,而指標變數是用來儲存這些位址的變數。
c語言中的一切函式呼叫中,值傳遞都是「按值傳遞」的,如果我們要在函式中修改被傳遞過來的物件,就必須通過這個物件的指標來完成。
由於記憶體中的每乙個位元組都有乙個唯一的編號,因此,在程式中使用的變數,常量,甚至數函式等資料,當他們被載入到記憶體中後,都有自己唯一的乙個編號,這個編號就是這個資料的位址。指標就是這樣形成的。
sizeof(指標): 4 不管什麼指標
值永遠為4 int * char * double*
int *p=&a;//指標用來儲存位址
用來儲存 指標 的變數,就是指標變數。如果指標變數p1儲存了變數 num的位址,則就說:p1指向了變數num,也可以說p1指向了num所在的記憶體塊 ,這種指向關係,在圖中一般用 箭頭表示。
上圖中,指標變數p1指向了num所在的記憶體塊 ,即從位址0028ff40開始的4個byte 的記憶體塊。
定義指標變數
c語言中,定義變數時,在變數名 前 寫乙個 * 星號,這個變數就變成了對應變數型別的指標變數。必要時要加( ) 來避免優先順序的問題。
取位址
既然有了指標變數,那就得讓他儲存其它變數的位址,使用& 運算子取得乙個變數的位址。
解位址
我們需要乙個資料的指標變數幹什麼?當然使用通過它來操作(讀/寫)它指向的資料啦。對乙個指標解位址,就可以取到這個記憶體資料,解位址 的寫法,就是在指標的前面加乙個*號。
解指標的實質是:從指標指向的記憶體塊中取出這個記憶體資料。
空指標
指向空,或者說不指向任何東西。在c語言中,我們讓指標變數賦值為null表示乙個空指標,而c語言中,null實質是 ((void*)0) , 在c++中,null實質是0。
一二級指標,指標陣列,陣列指標總結
指標就是變數,用來存放位址的變數。includeint main 指標的型別 變數有不同的型別,指標同樣有不同的型別,在定義指標的時候用 type 的方式來定義指標的,如 char 型別的指標就是為了存放char型別的變數的位址。int 型別就是為了存放int型別的變數位址,等等。char p1 n...
陣列,指標,指標陣列,陣列指標
指標是在32位系統下佔四個位元組,64位系統下佔八個位元組的一種型別,指標指向的內容可以是常量,變數,函式,結構體,指標本身,陣列,等等.一級指標 一級指標常常在函式傳參時使用,可傳的引數有一維陣列,常量指標,函式指標等等都可以 但我們要注意不要在函式中,通過改變形參的指向來達到改變實參指向的效果,...
指標, 指標的指標, 陣列, 指標陣列, 陣列指標
指標 int a 10 int p a 指標的指標 int b 20 int p b int p2p p 簡單陣列 int c 10 整數陣列,含有10個整數元素 也就是說每乙個元素都是整數 指標陣列 int p 10 指標陣列,含有10個指標元素 也就是說每乙個元素都是指標 陣列指標 int p ...