c語言,指標與陣列 指標與二維陣列2

2021-09-07 01:24:03 字數 2901 閱讀 2671

#include typedef int (*tp_parry1)[3] ;

#define uart_printf printf

void f1(void)

,};// a : 二維陣列名 , equal : 指向一維陣列的指標

tp_parry1 p = a;

int (*q)[3] = a;

//int (*t)[2] = a;//warning: initialization from incompatible pointer type

//int** x = a; // critical error, may lead to segmentation fault. no space for ptrs.

//指標結合律:1 (*q)括號最高優先順序,表示q是乙個指標。

// 2 向右 , 表示指向乙個陣列

// 3 右邊沒有了,向左,表示該陣列的元素是int型。

uart_printf("a00:%d\n",a[0][0]);

uart_printf("a01:%d\n",a[0][1]);

uart_printf("a02:%d\n",a[0][2]);

uart_printf("a10:%d\n",a[1][0]);

uart_printf("a11:%d\n",a[1][1]);

uart_printf("a12:%d\n",a[1][2]);

uart_printf("p00:%d\n",a[0][0]);

uart_printf("p01:%d\n",a[0][1]);

uart_printf("p02:%d\n",a[0][2]);

uart_printf("p10:%d\n",a[1][0]);

uart_printf("p11:%d\n",a[1][1]);

uart_printf("p12:%d\n",a[1][2]);

uart_printf("q00:%d\n",a[0][0]);

uart_printf("q01:%d\n",a[0][1]);

uart_printf("q02:%d\n",a[0][2]);

uart_printf("q10:%d\n",a[1][0]);

uart_printf("q11:%d\n",a[1][1]);

uart_printf("q12:%d\n",a[1][2]);

#if 0

//segmentation fault

uart_printf("x00:%d\n",x[0][0]);

uart_printf("x01:%d\n",x[0][1]);

uart_printf("x02:%d\n",x[0][2]);

uart_printf("x10:%d\n",x[1][0]);

uart_printf("x11:%d\n",x[1][1]);

uart_printf("x12:%d\n",x[1][2]);

#endif

}int main()

/*root@oucaijun:/work/dcc# gcc *.c; ./a.out

a00:0

a01:1

a02:2

a10:10

a11:11

a12:12

p00:0

p01:1

p02:2

p10:10

p11:11

p12:12

q00:0

q01:1

q02:2

q10:10

q11:11

q12:12

*/

先定義乙個二維陣列array以及指向它的指標p_array:

chararray[3][1000] ;

typedef char char_arry2[3][1000] ;  

typedef char_arry2* pchar_arry2 ;

pchar_arry2p_array= &array;

十進位制絕對位址

指向元素

指向一維陣列

指向一維陣列

指向一維陣列

指向二維陣列

十六進製制位址

872369208array[0]&array[0]

array

p_array[0]p_array

33ff4c38

872369209

array[0]+1

33ff4c39

.

.

.

.

872370208

&array[0]+1

array+1

p_array[0]+1

33ff5020

.

.

.

872372208

p_array+1

33ff57f0

array ==&array[0]

二維陣列 指標陣列與陣列指標

一 首先我們從字面意思理解一下什麼是指標陣列什麼是陣列指標 1 指標陣列 本質是乙個陣列,陣列中的每乙個元素是乙個指標。2 陣列指標 本質是乙個指標,而指標指向乙個陣列。二 我們該怎麼區分指標陣列和陣列指標?1 總共有三種表示形式 int p 4 和int p 4 和int p 4 表面看起來是不是...

C語言指標與二維陣列

includeint main int p 3 null p array p is same as array,the use of p is same as array.so p is the two devision pointer same as array int p1 array 0 0 ...

C語言指標與二維陣列

二維陣列在概念上是二維的,有行和列,但在記憶體中所有的陣列元素都是連續排列的,它們之間沒有 縫隙 以下面的二維陣列 a 為例 int a 3 4 從概念上理解,a 的分布像乙個矩陣 0 1 2 3 4 5 6 7 8 9 10 11 但在記憶體中,a 的分布是一維線性的,整個陣列占用一塊連續的記憶體...