我想在一个结构中使用数组,但我不确定该怎么做。我只能在结构中使用一个数组。
typedef struct
{
int arr[10];
} coords;
coords x;
printf("Enter X coordinates: ");
scanf("%d", x.arr[0]);
scanf("%d", x.arr[1]);
scanf("%d", x.arr[2]);
...
我的问题是如何在数组中输入X值?我首先考虑的是二维数组arr[10][10]
,但它不起作用,因为我对X值进行了一些计算。
正确的方法是定义一个像coords x;
这样的新对象并且只是全部完成吗?
基本上我希望struct包含一(1)个数组。我希望结构包含用户输入的地图的x和y坐标。在程序的后期,我想只用x值进行计算。
答案 0 :(得分:3)
您可以通过以下方式在一个结构中使用几个数组:
typedef struct
{
int x[10];
int y[10];
} coords;
coords c;
printf("Enter a couple of X coordinates: ");
scanf("%d", &c.x[0]);
scanf("%d", &c.x[1]);
printf("Enter a couple of Y coordinates: ");
scanf("%d", &c.y[0]);
scanf("%d", &c.y[1]);
请注意,在scanf()
中,您应该将指针传递给数组元素,而不是元素。
您也可以使用一个二维数组(X_COOR和Y_COOR可以删除):
#define X_COOR 0
#define Y_COOR 1
typedef struct
{
int coords[2][10];
} coords;
coords c;
printf("Enter a couple of X coordinates: ");
scanf("%d", &c.coords[X_COOR][0]);
scanf("%d", &c.coords[X_COOR][1]);
printf("Enter a couple of Y coordinates: ");
scanf("%d", &c.coords[Y_COOR][0]);
scanf("%d", &c.coords[Y_COOR][1]);
答案 1 :(得分:1)
一个更好的解决方案当然是做一个struct数组,因为你感兴趣的核心事物(一个表示为一对值的坐标)可以很好地建模为结构:
typedef struct {
int x, y;
} coordinate;
然后你可以很容易地声明一个数组:
coordinate my_coords[100];
答案 2 :(得分:0)
您的代码很好,除非您必须在每个&
的参数之前放置scanf
运算符。
scanf("%d", &x.arr[0]);
对于Y坐标,您必须在结构中定义另一个数组。
答案 3 :(得分:0)
为数组元素创建另一个结构:
typedef struct
{
int x;
int y;
} coord;
typedef struct
{
coord arr[10];
} coords;
用法:
scanf("%d", &x.arr[0].x);