这就是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)到对数组的引用时。