对C++还是陌生的我一直在练习问题。我编写的一个程序包含结构和数组的使用:
#include <iostream>
using namespace std;
int main (void){
struct CandyBar{
char brandName[200];
float weight;
int calories;
};
CandyBar snacks[3] = {
{"Cadbury's Flake",23.5,49},
{"Cadbury's Wispa",49.3,29},
{"Cadbury's Picnic",57.8,49},
};
for(int i=0;i<3;i++){
cout << "Brand Name: " << snacks[i].brandName << endl;
cout << "Weight: " << snacks[i].weight << endl;
cout << "Calories: " << snacks[i].calories << endl;
snacks++;
}
cin.get();
return 0;
}
上面的程序由于“snacks ++”而失败,但是我不明白为什么。据我了解,数组由指针(“snacks”)和对象([])两部分组成,所以当增加指针时,“snacks ++”不应该起作用吗?
谢谢
担
最佳答案
只需删除snacks++;
您已经在使用变量i
作为数组中的索引。
如果您确实想使用指针算术:
一种。您应该定义一个指向数组开头的指针并使用它,而不是使用数组。
b。访问数据时,应使用指针而不是带有索引i
的数组。
struct CandyBar* ptr = snacks;
for(int i=0;i<3;i++){
cout << "Brand Name: " << ptr->brandName << endl;
cout << "Weight: " << ptr->weight << endl;
cout << "Calories: " << ptr->calories << endl;
ptr++;
}