struct中的数组

时间:2013-11-20 12:53:59

标签: c

我想在一个结构中使用数组,但我不确定该怎么做。我只能在结构中使用一个数组。

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值进行计算

4 个答案:

答案 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);