为什么这样的迭代器合法?

fle*_*ang 2 c++ arrays c++11

这是代码

#include <stdio.h>

int a[] = {1, 2, 3, 4, 5};

int main()
{
    for (int i : a)
        printf("%d\n", i);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

在我看来,对于(int i:a),只有当a是整数向量时才有效.但是在上面的代码中,a是一个整数数组,很像一个指向整数的指针.为什么这样做?

Chr*_*ung 13

数组不像 "指针".数组可以衰减到指针,但在非衰减的上下文中,它仍然是一个已知大小的数组.