当我们将指针分配给变量时,我们倾向于使用'&'运算符,如下所示:
int a = 10;
int *aa = &a;
如果不使用它将给出错误。但是我遇到了这段代码,其中将指针分配给数组arr,但未使用'&'
int arr[10];
int *a = &arr;
并在使用它时显示错误: 初始化时无法将'int()[10]'转换为'int '。
答案 0 :(得分:1)
共享的链接@πάνταῥεῖ会告诉您,C样式数组会衰减为指向数组中第一个元素的指针,因此将此类数组发送给 any 函数时,它需要伴随着数组的大小,否则该函数将不再具有其大小(除非通过其他方式提供)。流操作符operator<<
和operator>>
只是带有一个参数的函数,所以
std::cin >> arr;
将尝试查找带有签名的函数:
std::istream& operator>>(std::istream&, int*);