0

我已经声明了一个结构数组:

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 个变量。

4

2 回答 2

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()并让它执行上述操作。

在上面的示例中,您尝试打印整个对象,但这是行不通的。

于 2012-05-03T20:12:11.763 回答
0

给定

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

test packet[50];

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

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

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

于 2012-05-03T20:44:19.607 回答