C/C++:为什么在循环初始化中声明指针是不可能的

min*_*box -5 c loops initializer-list initializing

打印数组时,初始化整数有效.

int a[MAX_SIZE] = {1,2,3,4,5,6,7,8,9,10};

for (int i = 0; i <= (MAX_SIZE - 1); i++)
{
    printf("%3d",a[i]);
}
Run Code Online (Sandbox Code Playgroud)

但是,我想知道为什么初始化一个指向整数("walker")的指针不起作用:

int a[MAX_SIZE] = {1,2,3,4,5,6,7,8,9,10};

for (int *aWalk = a, int *aEnd = a + MAX_SIZE - 1; aWalk <= aEnd; aWalk++)
{
    printf("%3d", *aWalk);
}
Run Code Online (Sandbox Code Playgroud)

Ulr*_*rdt 7

该语句int *aWalk = a, int *aEnd = a + MAX_SIZE - 1;甚至不能单独工作,因此它也不能在循环头中工作.您正在寻找的语法是:

int *ptr1 = some_address, *ptr2 = some_other_address;
Run Code Online (Sandbox Code Playgroud)

这适用于循环内部和外部.另请注意,您的问题不是声明一个指针而是两个指针.这也是为什么你应该首先提取一个最小的例子.