【发布时间】:2018-06-23 00:07:09
【问题描述】:
我正在尝试访问结构数组中的项目并更改函数中的值。我创建了一个结构数组,并尝试在函数初始化中传递我更改值的位置。但是我不知道如何在 main 中传递函数的变化。
代码是:
#include <stdio.h>
#include <stdlib.h>
#define Q_LIMT 100
typedef struct servers
{
int id;
int num_in_Q;
int server_status;
}server;
void initialize(server *servers);
int main()
{
server servers[2];
initialize(servers);
printf("server[%d].id = %d\n",servers[0].id);
printf("server[%d].num_in_Q = %d\n",servers[0].num_in_Q);
printf("server[%d].server_status = %d\n",servers[0].server_status);
return 0;
}
void initialize(server *servers)
{
int i=0,j=0;
for(i=0; i<2; i++) {
servers[i].id = i;
servers[i].num_in_Q = 0;
servers[i].server_status = 0;
}
【问题讨论】:
-
这段代码缺少一些东西,至少是
}。这是完整的代码吗?请记住,如果您稍后在文件中声明函数,则不需要提前声明方法签名,您可以在第一次使用之前移动该定义。 -
servers不是变量,而是结构。server不是变量,它是typedef别名。您至少需要使用堆栈分配或malloc声明一个正确的servers数组。 -
我的建议是您删除
initialize函数中的所有代码,然后让您的代码在没有任何警告或错误的情况下进行编译。您的代码中有很多问题,以至于您甚至无法谈论initialize函数中应该包含的内容。如果您使用gcc或clang进行编译,请使用-Wall选项并清除所有警告。 -
你实现了它,所以不清楚你的问题是什么。也许它没有编译?现在,有人建议:你有一个结构
servers、一个 typedefserver和称为servers的局部变量。不要那样做,你自己会糊涂的。不是很有创意,但是调用结构server_info和调用typedef一样。这样,数组使用servers就不会和类型混淆了。
标签: c arrays function pointers struct