3 回答

TA貢獻1799條經(jīng)驗 獲得超9個贊
數(shù)組不是指針!
int a[] = {1, 2, 3};int *p = a; // p now points to a[0]
多維陣列
int a[4][3][5]
int a[4][3][5]
int b[60]
int a[4][3][5]
int b[60]
int a[4][3][5]
int b[60]
{ {1, 2, 3, 4, 5} {6, 7, 8, 9, 10} {11, 12, 13, 14, 15}}{ {16, 17, 18, 19, 20} {21, 22, 23, 24, 25} {26, 27, 28, 29, 30}}{ {31, 32, 33, 34, 35} {36, 37, 38, 39, 40} {41, 42, 43, 44, 45}}{ {46, 47, 48, 49, 50} {51, 52, 53, 54, 55} {56, 57, 58, 59, 60}}
句法
int a[3][3];printf("%p %p", a, a[0]);
0x7eb5a3b4 0x7eb5a3b4
但是,只有一個可以直接分配給指針。:
int *p1 = a[0]; // RIGHT !int *p2 = a; // WRONG !
為什么不能 a
分配給指針,但是 a[0]
能,會,可以?
a
a[0]
為什么數(shù)組在為數(shù)組創(chuàng)建指針方面是多維的?
int a[4][5][95][8];int (*p)[5][95][8];p = a; // p = *a[0] // p = a+0
*p
: int (*p)[5][95][8]
int *p[5][95][8]
結(jié)語
如果數(shù)組在使用的上下文中沒有其他用途,則它們將衰減為地址。 多維數(shù)組只是數(shù)組的數(shù)組,因此,“腐朽”地址將承擔(dān)“我有子維度”的負擔(dān)。 維度數(shù)據(jù)不能存在于指針中 除非你把它給它.

TA貢獻2051條經(jīng)驗 獲得超10個贊
static uint8_t l_matrix[10][20];
uint8_t (*matrix_ptr)[20] = l_matrix;
編輯:
編輯2:
typedef uint8_t array_of_20_uint8_t[20];array_of_20_uint8_t *matrix_ptr = l_matrix;
static uint8_t l_matrix[10][20];
(*l_matrix + (20 * rowno) + colno)
所有指針操作都會自動考慮指向?qū)ο蟮拇笮 ?K&R第5.4節(jié),第103頁
- 3 回答
- 0 關(guān)注
- 821 瀏覽
添加回答
舉報