通过指针错误访问数组内的数据

时间:2013-08-02 10:53:14

标签: c++ syntax-error

我有两个msg格式的文件。 msg格式在这里并不重要。

car.msg

int speed;
int width;

cararr.msg

car mycar[];

我想打印有关所有车辆的所有信息,但我不知道现有车辆的数量(阵列有多大),所以我使用以下技术打印信息。

所以我这样做:

cararr* ptr2car;
for(int i=0;mycar[i] != '\0'; i++){
      cout << ptr2car->mycar[i].speed <<endl;
      cout << ptr2car->mycar[i].width <<endl;
}

尽管如此,我还是收到了错误。我不知道我做错了什么。我不知道应该使用什么方法来获得此输出。请帮忙

另外,为什么我应该指向cararr,当我可以采用cararr inst2car的一个实例并执行类似的操作时:

 cararr inst2car;
    for(int i=0;mycar[i] != '\0'; i++){
          cout << inst2car.mycar[i].speed <<endl;
          cout << inst2car.mycar[i].width <<endl;
    }

感谢

1 个答案:

答案 0 :(得分:1)

通常,您需要准确了解数组末尾的内容。您需要某种sentinel值作为分隔符来指示数组的结尾。

c字符串中使用的

'\ 0'就是这种分隔符的一个例子。

您需要确保数组中的最后一个元素是这样的分隔符,并在条件中检查它。

很难用这样的通用问题给你更具体的答案。

例如,如果您知道最后一个元素的速度为-1,则可以使用:

for(int i=0;mycar[i].speed != -1; i++) {