二維陣列作為形參時退化為指標
void
printa
(char a[3]
[4])
*a : 代表第0行首位址
a+i 等價於 &a[i] : 代表第i行首位址
(a+i) 等價於 a[i] : 代表第0行首元素位址
(a+i)+j 等價於 &a[i][j]: 代表第i行第j列元素的位址
((a+i)+j) 等價於 a[i][j] = 代表第i行第j列元素的值
printf
("%p, %p\n"
, a, a +1)
;//a代表首行位址
printf
("%p, %p\n",*
(a +0)
,*(a +0)
+1);
//*(a+0)代表首行首元素位址
printf
("%p\n",*
(a +0)
+1);
//第i行第j列元素的位址
printf
("%c\n",*
(*(a +0)
+0))
;//第i行第j列元素的值
測試**
#define _crt_secure_no_warnings
#include
#include
#include
void
printa
(char a[3]
[4])
int main
(void);
char a[
4]=,
,}; int n =
sizeof
(a)/
sizeof
(a[0])
;//二維陣列行數
int m =
sizeof
(a[0])
;//二維陣列列數
printf
("m = %d, n = %d\n"
, m, n)
;printf
("實際陣列a大小 = %d\n"
,sizeof
(a))
;printa
(a);
printf
("%p, %p\n"
, a, a +1)
;//a代表首行位址
printf
("%p, %p\n",*
(a +0)
,*(a +0)
+1);
//*(a+0)代表首行首元素位址
printf
("%p\n",*
(a +0)
+1);
//第i行第j列元素的位址
printf
("%c\n",*
(*(a +0)
+0))
;//第i行第j列元素的值
int i =0;
for(i =
0; i < n; i++
)//二維陣列按行輸出
printf
("\n");
system
("pause");
return0;
}
c語言中的二維陣列相關
1 定義二維陣列 型別 陣列名 常量表示式 表示行有多少元素 常量表示式 表示列有多少函式 int a 3 4 3行4列 char a 3 4 3行4列 訪問最後乙個元素 a 2 3 訪問第乙個元素 a 0 0 都是從0開始 2 陣列初始化和列印 二維陣列也可以僅僅對某些元素賦初值。剩下的變為0 想...
c語言中二維陣列的傳遞
c語言中經常需要通過函式傳遞二維陣列,有三種方法可以實現,如下 方法一,形參給出第二維的長度。例如 include void func int n,char str 5 void main func 3,str 方法二,形參宣告為指向陣列的指標。例如 include void func int n,...
C語言中的二維陣列與指標
最近複習了一下c語言中的指標陣列 陣列指標這些比較讓人困惑的概念,有了一些新的認識。在定義變數時,需要用到一些運算子,比如 這些運算子有一定優先順序,我們可以根據其優先順序來對我們定義的變數進行理解。具體的方法就是 加括號。下面舉幾個例子 1 二維陣列 定義 int a 3 4 理解 運算子遵循從左...