Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/155.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 通过指针错误访问数组内的数据_C++_Syntax Error - Fatal编程技术网

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

C++ 通过指针错误访问数组内的数据,c++,syntax-error,C++,Syntax Error,我有2个msg格式的文件。msg格式在这里并不重要 car.msg int speed; int width; 卡拉尔味精 car mycar[]; 我想打印所有存在的汽车的所有信息,但我不知道存在的汽车数量(数组有多大),所以我使用以下技术打印信息 所以我这样做: cararr* ptr2car; for(int i=0;mycar[i] != '\0'; i++){ cout << ptr2car->mycar[i].speed <<endl;

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

car.msg

int speed;
int width;
卡拉尔味精

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*ptr2car;
对于(int i=0;mycar[i]!='\0';i++){

cout mycar[i].speed通常,您需要确切知道数组末尾的内容。您需要某种类型的哨兵值作为分隔符来指示数组的结尾

c字符串中使用的“\0”就是此类分隔符的一个示例

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

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

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

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

通常,您需要确切地知道数组末尾的内容。您需要某种类型的sentinel值作为分隔符来指示数组的结尾

c字符串中使用的“\0”就是此类分隔符的一个示例

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

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

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

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

cararr
是否有
mycar
成员?您可能只想尝试
mycar[i]
而不是
mycar[i]!='\0'
这一切实际上取决于msg文件是什么(您是否使用ROS?),为这些文件生成的结构是什么,数据是如何获得的等等。例如,您没有向我们展示如何实例化
ptr2car
。可能是动态内存,所以它必须是指针。顺便问一下,您在循环中使用
ptr2car->mycar
,但仅
mycar
作为循环条件。这是您的编译错误吗?更不用说你不能将结构与整数进行比较。是的,我使用的是ROS。我想问题是我不能使用mycar[I]!='\0',因为它不是字符。也许我还应该更改循环条件并添加ptr2car->mycar[I]在循环中。我将检查并通知。
cararr
是否有
mycar
成员?您可能只想尝试
mycar[I]
而不是
mycar[I]!='\0'
这一切真的取决于msg文件是什么(您使用的是ROS吗?),为这些文件生成的结构是什么,数据是如何获得的等等。例如,您没有向我们展示如何实例化
ptr2car
。可能是动态内存,所以它必须是指针。顺便问一下,您在循环中使用
ptr2car->mycar
,但仅
mycar
作为循环条件。这是您的编译错误吗?更不用说你不能将结构与整数进行比较。是的,我使用的是ROS。我想问题是我不能使用mycar[I]!='\0',因为它不是字符。也许我还应该更改循环条件并添加ptr2car->mycar[I]在循环中。我会检查并通知。是的,这就是问题。我检测到不同的汽车,但我对汽车的数量或参数一无所知。每次都可能有不同的读数。是的,这就是问题。我检测到不同的汽车,但我对汽车的数量或参数一无所知。每次都可能有不同的阅读。