C 沒這麼難 4 陣列 指標,解不開的節

2021-10-08 13:08:37 字數 1322 閱讀 2149

(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的指標理解為 自以為指...