使用指针遍历数组的For循环无法正常工作

时间:2019-09-18 17:00:25

标签: c++ arrays loops pointers

对于我的作业问题,我必须使用指针来遍历数组。当我尝试将3个“名称”值存储到名为Object的{​​{1}}数组的成员变量中时,我发现它存储该值,但从不递增。因此,给定的最后一个值存储在第一个索引中,接下来的两个为空。

RentalAgency

RentalAgency *agencies_ptr = agencies; for(int i = 0; i < 3;i++,++agencies_ptr){ infile.get((agencies->name),MAX_SIZE,space); } 是对象数组

如果输入为赫兹,阿拉莫和预算,则应输出赫兹,阿拉莫和预算。 实际输出仅为预算。

2 个答案:

答案 0 :(得分:0)

只要写

for(int i = 0; i < 3; i++){
    infile.get( agencies_ptr[i].name, MAX_SIZE, space );
}

答案 1 :(得分:0)

您要取消引用agencies,而不是agencies_ptr(并且不需要括号):

RentalAgency *agencies_ptr = agencies;

for(int i = 0; i < 3; ++i, ++agencies_ptr)
   infile.get(agencies_ptr->name, MAX_SIZE, space);

但是遍历“范围”的一种更惯用的方法是(it代表iterator):

RentalAgency *agencies_it = agencies;
RentalAgency *agencies_end = agencies_it + 3;

for(; agencies_it != agencies_end; ++agencies_it)
   infile.get(agencies_it->name, MAX_SIZE, space);

它更干净,表达意图更好,并且在经验丰富的程序员中更熟悉。