(2)中,我們學習了變數。然而,單個變數的空間是有限的。當我們需要儲存大量資料的時候,變數就顯得無力了。這一次,我們將介紹儲存大量資料的方法——陣列,並且帶你跨過c++第一大砍,廣為人知的難題:指標
。
先來看一行**:
int arr[10]
;
這一語句宣告了乙個長度
為10的int陣列。
那麼,如何儲存資料呢?方法是使用下標
。
arr[0]=4;
這一語句讓arr的第乙個元素的值等於4。其中,0為下標
。乙個長度為 n 的陣列,有效的下標是0~(n-1)
。比如,arr的有效下標為0-9
。
為什麼是這樣呢?下面我們通過圖示來了解這些**的實質。
值得注意的是,陣列的下標也可以是變數。
我們宣告的,其實是10個連續
的int和乙個指向第乙個int的指標
。當我們使用下標i訪問時,其實是這樣的
*
(arr+i)
這裡的i即指標與你所要訪問的元素的偏移量
。當你使用arr[10]
時,就是這樣的
這樣的訪問,可能會訪問到其他變數,也可能會訪問到程式的一些關鍵**,甚至可能導致程式崩潰。這種行為,稱為指標或陣列的越界
。
現在我們來談談指標。
我們可以這樣宣告乙個指標:
int
*parr;
可以讓指標指向剛剛的陣列
parr = arr;
可以讀取/改寫陣列的資料
*parr =1;
//等價於*(parr+0) = 1;
int tmp =
*(parr+2)
;
還可以當成陣列使用
parr[0]
=1;//完全合法
這裡的*
被稱為解除引用運算子
。別問我為什麼,沒有為什麼,就叫這個名字。 C 沒這麼難 (0)概要
從這個系列開始,我準備出一套c 教程。傳統觀念認為,c 複雜 難用 編譯速度慢,對於大工程而言,成本非常高,是一門應該淘汰的技術。然而,google microsoft乃至國內的bat都在使用c google的c 規範中明確提出,google的大型專案,都使用c 開發,這又是為什麼呢?總結起來,網上...
C語言隨筆4 指標陣列 陣列指標
陣列 1 陣列名為位址,表達方法 int a 10 a 陣列名表示首位址 a 陣列名加取位址符,仍然表示首位址 a 0 第0個元素的位址,即首位址 陣列名是指標常量,值不可變,不占用記憶體空間 2 指標陣列 每個元素都是指標 指標陣列 double a 10 每個元素佔4 8個位元組 3 陣列指標 ...
C 學習筆記4 陣列與指標
陣列和指標 1.int pi 0 pi不指向任何物件。指標最好應初始化,如果須分開定義指標和其所指向的物件,則將指標初始化為0.2.把int型變數賦給指標是非法的,儘管此int型變數的值可能為0.但允許把數值0或在編譯中可獲得0值的const量賦給指標。3.如果把指向const的指標理解為 自以為指...