【发布时间】:2014-11-08 21:21:41
【问题描述】:
如果可以的话,我会通过在主函数中初始化结构的副本并将其传递给另一个函数来解决此问题,但我不允许更改此项目的函数头。
既然我得到了它,我也确信有一个同样好的解决方案可以帮助我了解如何使用动态内存分配来使函数的操作独立于其范围之外功能。
我的结构:
typedef struct AmNet { // this struct can be changed as needed
int size;
User ** users; // group of users in the net
User *front; // the first user
User *back; // the last user
} *AmNet;
要创建的函数是:
void create_net(){ // this line cannot be changed
}
在另一个文件的主函数中,简单地调用:
create_net();
然后,例如 -- 这个函数应该能够访问该结构,创建一个新用户,并将其添加到同一结构的用户列表中。
void addUser( const char *name ) {
}
与结构初始化相同的 .c 文件中的其他函数也不会获取数据结构或返回它,但它们可以访问它并对其进行操作。就好像该结构应该能够被视为一个全局变量。
如何做到这一点?
【问题讨论】:
-
您打算多次调用“create_net”吗?还是它更适合用来创建一个唯一的实例?
-
只是为了创建它的唯一实例。
-
只需在文件中的任何函数之外创建结构实例。然后文件中的所有内容都可以访问它。
标签: c pointers data-structures scope