C/C++ : Why is it impossible to declare a pointer in loop initialization

标签 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]);
}

但是,我想知道为什么初始化指向整数(“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);
}

最佳答案

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

int *ptr1 = some_address, *ptr2 = some_other_address;

这在循环内部和外部都有效。另请注意,您的问题不是声明一个指针,而是声明两个指针。这也是为什么您应该首先提取一个最小示例的原因。

关于C/C++ : Why is it impossible to declare a pointer in loop initialization,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36125708/

相关文章:

c - txt 文件中空格会占用空间吗?

windows - 批处理脚本循环

c++ - 类对象集

c++ - std::initializer_list 堆是否分配内存?

C,通过标记字符串填充二维数组

c - 头文件中声明的外部变量的链接器出错

c - 从c中的链表中删除一个项目

oracle - 遍历Oracle PL/SQL中的表

javascript - 循环更多CPU友好的Js

c++ - 如何在派生类上使用初始值设定项列表?