air*_*air 14 c++ arrays
#include<iostream> int num[3]={66,77,88}; int main() { int(*pi)[3]=# std::cout<<*pi; }
结果是地址而不是数组。这背后的解释是什么?
son*_*yao 18
不是整个数组对象?
*pi给出数组,即int[3]. 但是operator<<forstd::basic_ostream没有重载取数组但有重载取指针 ( const void*),然后发生数组到指针衰减,转换后的指针 ( int*) 指向数组的第一个元素,然后转换为const void*,然后传递到std::cout并打印出来。
*pi
int[3]
operator<<
std::basic_ostream
const void*
int*
std::cout
存在从数组类型的左值和右值到指针类型的右值的隐式转换:它构造一个指向数组第一个元素的指针。每当数组出现在不需要数组的上下文中时,就会使用此转换,但指针是:
归档时间:
4 年,7 月 前
查看次数:
1405 次
最近记录: