这是ISO的标准:标准转换:数组到指针的转换:$ 4.2.1
可以将"数组NT"或"未知T的数组"的左值或右值转换为"指向T的指针"的右值.结果是指向数组的第一个元素的指针.
任何人都可以通过示例程序解释这个问题.
我已经看过这些链接,但我无法理解:
Jam*_*lis 11
在C和C++中,可以使用数组,就好像它是指向其第一个元素的指针一样.实际上,给定一个名为的数组x,您可以&x[0]用just 替换大多数用法x.
这就是订阅如何与数组对象一起使用:
int x[5];
x[2]; // this is the same as (&x[0])[2]
Run Code Online (Sandbox Code Playgroud)
这也是如何将数组传递给具有指针类型参数的函数:
void f(int* p);
int x[5];
f(x); // this is the same as f(&x[0])
Run Code Online (Sandbox Code Playgroud)
有几种情况下不会发生数组到指针的转换.示例包括当数组是操作数sizeof或一元&操作符(运算符的地址)时,使用字符串文字初始化数组时,以及数组绑定到数组的引用时.