1

我是一个二维数组说int a[2][3]

当我们调用函数时说 add(a);

我们使用指向数组的指针接收它void add(int(*p)[3])

一维数组中说 int b[5]

我们将数组的地址存储在一个指向整数 int *p 的简单指针中; p=b;

我的问题是,为什么我们不将 b 存储在指向数组 ex int(*p)[5]=b;的指针中?

4

1 回答 1

1

用作值的数组名称将衰减为等于指向其第一个元素的指针的值,具有该类型。这意味着:

int a[2][3];

名称a将衰减为&a[0],其类型为int (*)[3]。但对于:

int b[5];

名称b将衰减为&b[0],其类型为int *

但是,&b是指向 的指针b,这意味着它具有 类型int (*)[5]。碰巧对于一个数组类型,它的地址将等于它的第一个元素的地址。但是,&b具有与 不同的类型&b[0]

于 2013-06-29T02:53:30.737 回答