C++ C++;数组名称的值 #包括 使用名称空间std; int main() { int-foo[5]={0,1,2,3,4}; cout
C++ C++;数组名称的值 #包括 使用名称空间std; int main() { int-foo[5]={0,1,2,3,4}; cout,c++,arrays,C++,Arrays,foo(不访问数组元素)将在发送到输出流时衰减到第一个数组元素(foo[0])的地址 foo[0]将返回第一个数组元素,&foo[0]将衰减到其地址。因此,两个输出值是相同的。foo(不访问数组元素)将在发送到输出流时衰减到第一个数组元素的地址(foo[0]) foo[0]将返回第一个数组元素,&foo[0]将衰减到其地址。因此,两个输出值是相同的。不同的是类型: foo具有类型int(&)[5] foo[0]具有类型int& &foo具有类型int(*)[5] &foo[0]具有类型int*
foo
(不访问数组元素)将在发送到输出流时衰减到第一个数组元素(foo[0]
)的地址
foo[0]
将返回第一个数组元素,&foo[0]
将衰减到其地址。因此,两个输出值是相同的。foo
(不访问数组元素)将在发送到输出流时衰减到第一个数组元素的地址(foo[0]
)
foo[0]
将返回第一个数组元素,&foo[0]
将衰减到其地址。因此,两个输出值是相同的。不同的是类型:
具有类型foo
int(&)[5]
具有类型foo[0]
int&
具有类型&foo
int(*)[5]
具有类型&foo[0]
int*
操作符区别在于类型:
foo
具有类型int(&)[5]
foo[0]
具有类型int&
&foo
具有类型int(*)[5]
&foo[0]
具有类型int*
operator它也是关于std::stream::operator它也是关于std::stream::operator@delnan:foo+1!=(&foo)[1]
,这就是我刚才说的区别。澄清一点。@delnan:foo+1!=(&foo)[1]
,这就是我刚才说的区别。澄清一点。
#include <iostream>
using namespace std;
int main()
{
int foo[5] = {0,1,2,3,4};
cout << (&foo[0]) << " " << foo <<endl;
return 0;
}
(&foo[0]) + 1 == &foo[1]
(&foo)[1] == &foo[5]