我 2D 数组说 int a [2] [3]
当我们调用该函数时,请说添加(a);
我们使用指向数组的指针接收它 void add(int(* p)[3])
BUT
在 1D 数组中说 int b [5]
我们将数组的地址存储在一个指向整数的简单指针中 int * p; p = b;
我的问题是为什么我们不将b存储在指向数组ex的指针中 int(* p)[5] = b;
答案 0 :(得分:1)
当用作值时,数组名称将衰减为等于指向其第一个元素的指针的值。这意味着:
int a[2][3];
名称a
将衰减为&a[0]
,其类型为int (*)[3]
。但是,对于:
int b[5];
名称b
将衰减为&b[0]
,其类型为int *
。
但是,&b
是指向b
的指针,这意味着它具有int (*)[5]
类型。碰巧的是,对于数组类型,其地址将等于其第一个元素的地址。但是,&b
与&b[0]
的类型不同。