【发布时间】:2017-09-23 17:34:05
【问题描述】:
这是我的代码:
#include <iostream>
using namespace std;
struct galaxy
{
int x_pixel;
int y_pixel;
};
galaxy get_space_ship(int size)
{
galaxy UFO[size];
for(int i=0;i<size;i++)
{
UFO[i].x_pixel = 10;
UFO[i].y_pixel = 10;
}
return UFO[size];
}
galaxy update(galaxy UFO[], int size)
{
for(int i=0;i<size;i++)
{
UFO[i].x_pixel += 100;
UFO[i].y_pixel += 100;
}
return UFO[size];
}
int main()
{
galaxy space_ship[10];
space_ship[10] = get_space_ship(10);
for(int i=0;i<10;i++)
{
cout << space_ship[i].x_pixel << endl;
cout << space_ship[i].y_pixel << endl;
}
space_ship[10] = update(space_ship,10);
for(int i=0;i<10;i++)
{
cout << space_ship[i].x_pixel;
cout << space_ship[i].x_pixel;
}
}
在这里,我正在尝试为一个数组创建一个具有两个字段(x_pixel,y_pixel)的结构的程序,然后初始化它们并更新它们的值并打印它们但没有得到预期的输出。我的代码没有任何编译错误。请检查我的代码,让我知道我错在哪里,并包括一些提示,因为我是新手。 谢谢
【问题讨论】:
-
C 样式数组不支持您使用它们的语义。试试
std::array。或者,std::vector用于非静态尺寸。 -
galaxy space_ship[10]; space_ship[10] = ...- 此处未定义的行为。space_ship只有 10 个元素,因此有效索引为 0 .. 9。 -
使用 std::vector!
-
galaxy UFO[size];-- 这不是有效的 C++。 C++ 中的数组必须使用常量表达式来表示条目数,而不是变量。正如多个 cmets 和答案所建议的那样,使用std::vector。