无法访问我的结构数组

时间:2012-05-03 20:10:22

标签: c arrays struct

我已经声明了一系列结构:

typedef struct{
int source;
int dest;
int type;
int port;
char data;
}test;

test packet[50];

我试图访问数组并将其打印到屏幕上:

for (p = 0; p < i; p++)
{
    printf("%i", packet[p]);
}

但我没有得到我的期望。我在C非常新,所以对于这篇文章的任何问题我很抱歉。只是要求更多信息,我会给它。我的逻辑完全错了吗?

在我的脑海中,我在数组中创建了50个结构实例,数组的每个元素都包含结构中的5个变量。

2 个答案:

答案 0 :(得分:3)

自从我做完C以来已经很久了,但我觉得它不会这样。您可能希望逐个打印结构的成员变量。

for (p = 0; p < i; p++)
{
  printf("%i\n", packet[p].source);
  printf("%i\n", packet[p].dest);
  printf("%i\n", packet[p].type);
  printf("%i\n", packet[p].port);
}

或者更好的是,制作一个方法,称之为printTest(),并让它执行上述操作。

在上面的示例中,您正在尝试打印整个对象,但这不起作用。

答案 1 :(得分:0)

鉴于

typedef struct{
int source;
int dest;
int type;
int port;
char data;
}test;

test packet[50];

您必须明确引用您要访问的每个字段。对于您的示例,您希望打印结构的每个字段,因此您需要专门引用每个字段,如下所示:printf("%i\n", packet[0].source);

您的具体示例位于for循环中,p为数组索引,因此实际代码为printf("%i\n", packet[p].source);

最后,您可以轻松地在C ++中讨论一些C构造,但不能在C语言中讨论类C ++构造。