我已经声明了一系列结构:
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个变量。
答案 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 ++构造。