一維陣列與二維陣列的訪問方式

2021-10-25 08:04:04 字數 1531 閱讀 9440

一維陣列中 a[i] 中的 a 代表了本陣列的首位址,相當於 &a[0]。因此 *a 就等於 a[0]。那麼對 a 加 1,就可以訪問下一位:*(a+1) 就等於 a[1]。

訪問一維陣列的元素:a[i] = *(a+i);

假設有 a[2][2] 這樣乙個二維陣列,可以這麼理解它:a 由 a[0],a[1],a[2] 構成,而 a[0] 又由 a[0][0],a[0][1],a[0][2] 構成,a[1] 由 a[1][0],a[1][1],a[1][2] 構成,a[2] 由 a[2][0],a[2][1],a[2][2] 構成。

1.    a 由 a[0],a[1],a[2] 構成,而 a[0] 又由 a[0][1],a[0][1],a[0][2] 構成;

兩個一維陣列構成了乙個二維陣列。a 是乙個二維陣列,a[i] 是乙個一維陣列。既然 a[i] 是乙個陣列,那麼陣列名就是這個陣列的首位址。比如,a[0] 就等同於 &a[0][0]。

2.    a 是乙個陣列名,它有三個元素:a[0],a[1],a[2];* a 等於 a[0],*(a + 1) 等於 a[1],*( a + 2 )等於 a[2];a[0], a[1], a[2] 又都是各個一維陣列的首位址。比如 a[0] 就等同於 &a[0][0],就是說 *a[0] = a[0][0]。

再結合上面的 *a 等於 a[0],可以得出:**a 等於 a[0][0]。

以a[2][2]為例,則指標與陣列的等價關係為:

3.簡單記之,二維陣列 a[i][j] 中的 a[i] 是乙個一維陣列名,也就是乙個位址量。

訪問二維陣列的各個元素:a[i][j] = *(a[i] + j) = *(*(a+i)+j)       

通常對字串的處理,傳入的的引數都是字串的首位址,也就是字串名。

比如:

char s[80]; // 定義乙個長度為 80 的字串 s

char t[80]; // 定義乙個長度為 80 的字串 t

gets (s); // 讀入乙個字串

puts (s); // 輸出乙個字串

strcpy (s, t); // 將字串 t 拷貝到 字串 s 中

其中的 s 都是該字串的首位址

那相對於二維陣列而言,

char *s = "i", "love", "you"};

//輸出"love"

puts (s[1]); //字串形式 - s[1]是乙個位址量,代表"love",為"love"字串的首位址

puts (*(s+1)); //指標形式

[1]  二維陣列、指標陣列、字串二維陣列   - 

文之

一維陣列與二維陣列

1.一維陣列的定義格式為 型別說明符 陣列名 常量表示式 在定義陣列時,需要指定陣列中元素的個數,方括弧中的常量表示式用來表示元素的個數,即陣列長度。常量表示式中可以包括常量和符號常量,但不能包含變數。c語言不允許對陣列的大小作動態定義,即陣列的大小不依賴於程式執行過程中變數的值。在定義陣列時對陣列...

陣列(一維陣列 二維陣列)

陣列概述 c 陣列從零開始建立索引,即陣列索引從零開始。c 中陣列的工作方式與在大多數其他流行語言中的工作方式類似。但還有一些差異應引起注意。這些其實和泛型有些類似,陣列的操作沒有泛型方便,但是效能卻不是泛型所能比擬的 宣告陣列時,方括號 必須跟在型別後面,而不是識別符號後面。在c 中,將方括號放在...

一維陣列,二維陣列與指標

陣列與指標間的三條規則 陣列名是指向陣列首元素的指標。e相當於給e公升了一階。int a 4 a 0 本身是乙個值,a 0 是乙個位址,公升階大概就是這個意思 e相當於給e降了一階。降階相當於把乙個指標降為值,a 0 是乙個位址,a 0 就成為了值 以上內容來自北京大學 c程式設計高階 一維陣列與指...