这就是ISO的要点:标准转换:数组到指针的转换:$ 4.2.1



如果可能的话,可以用示例程序来解释这一点。

我已经看过这些链接,但是我无法理解:

Array and Rvalue

I think I may have come up with an example of rvalue of array type

最佳答案

在C和C++中,都可以将数组用作指向其第一个元素的指针。实际上,给定一个名为x的数组,您可以仅将&x[0]替换大多数x的用法。

这就是下标如何与数组对象一起使用的方式:

int x[5];
x[2];     // this is the same as (&x[0])[2]

这也是将数组传递给具有指针类型参数的函数的方式:
void f(int* p);

int x[5];
f(x);     // this is the same as f(&x[0])

在几种情况下,不会发生数组到指针的转换。例如,当数组是sizeof或一元&(运算符的地址)的操作数时,何时使用字符串文字初始化数组,以及将数组绑定(bind)到对数组的引用时。

10-04 12:13
查看更多