如果我的C程序有很多变量,如何管理这些变量

如果我的C程序有很多变量,如何管理这些变量,c,C,我自己一直在学习C语言,现在我正在尝试制作一个基于文本的游戏,它可以处理很多变量。管理源和变量的最佳方法是什么?我考虑过使用头文件,并将所有变量放在那里 还有一种方法可以创建函数,可以创建可以在函数外部使用的变量,比如在主程序上 提前谢谢 编辑:拼写错误修复将有意义的变量组织到一组结构中 struct point { int x; int y; }; 然后用这个: struct point p; p.x = 10; p.y = 20; 内存使用率仍然相同,但您已经将许多变量组织在一起

我自己一直在学习C语言,现在我正在尝试制作一个基于文本的游戏,它可以处理很多变量。管理源和变量的最佳方法是什么?我考虑过使用头文件,并将所有变量放在那里

还有一种方法可以创建函数,可以创建可以在函数外部使用的变量,比如在主程序上

提前谢谢


编辑:拼写错误修复

将有意义的变量组织到一组结构中

struct point {
  int x;
  int y;
};
然后用这个:

struct point p;
p.x = 10;
p.y = 20;
内存使用率仍然相同,但您已经将许多变量组织在一起。稍后,您可以轻松地将它们用作参数,将函数用作指针

int get_distance(struct point* p) {
    return ...
}
而不是

int get_distance(int x, int y) {
    ...
}
为什么结构也很方便。如果设置了接受结构指针的变量和函数,则可以轻松修改结构内容(参数),函数将保持不变

如果您想要相同的函数,则必须修改函数。例如,我们想向点添加新参数,我们称之为
z
parameter。如果没有结构,我们必须修改函数,无论我们在哪里调用这个函数,我们都必须修改调用

int get_distance(int x, int y, int z) {

}

将有意义的变量组织到一组结构中

struct point {
  int x;
  int y;
};
然后用这个:

struct point p;
p.x = 10;
p.y = 20;
内存使用率仍然相同,但您已经将许多变量组织在一起。稍后,您可以轻松地将它们用作参数,将函数用作指针

int get_distance(struct point* p) {
    return ...
}
而不是

int get_distance(int x, int y) {
    ...
}
为什么结构也很方便。如果设置了接受结构指针的变量和函数,则可以轻松修改结构内容(参数),函数将保持不变

如果您想要相同的函数,则必须修改函数。例如,我们想向点添加新参数,我们称之为
z
parameter。如果没有结构,我们必须修改函数,无论我们在哪里调用这个函数,我们都必须修改调用

int get_distance(int x, int y, int z) {

}
  • 作为一个经验法则-总是尽量减少变量的作用域。例如:如果一个变量只在一个函数中使用,那么应该在该函数中定义它的唯一作用域
  • 使用结构将同一实体的变量封装在一起,就像这里的其他答案一样
  • 头文件-您应该有充分的理由在头文件中定义变量。通常,头文件用于声明需要在多个
    .c
    源文件中使用的函数和类型声明。如果您在
    a.c
    文件中定义了一个全局变量,并且希望从
    b.c
    引用该变量,请使用
    extern
此外,如果您可以添加一些代码,我们的建议可能会更具体,也不那么理论化。

  • 作为一个经验法则-总是尽量减少变量的作用域。例如:如果一个变量只在一个函数中使用,那么应该在该函数中定义它的唯一作用域
  • 使用结构将同一实体的变量封装在一起,就像这里的其他答案一样
  • 头文件-您应该有充分的理由在头文件中定义变量。通常,头文件用于声明需要在多个
    .c
    源文件中使用的函数和类型声明。如果您在
    a.c
    文件中定义了一个全局变量,并且希望从
    b.c
    引用该变量,请使用
    extern

此外,如果您可以添加一些代码,我们的建议可能会更具体,也不太理论化。

将相关变量组织到结构上。一般来说,不建议将所有变量作为全局变量聚集在单个头文件中。您应该为自己制定一个计划,在哪个范围内使用什么变量,并尽可能使其位于该范围的局部。例如,根据用途将其分类为本地、类范围或不同的头文件,这些头文件并非全部包含在所有位置。结构还有助于跟踪变量。对于动态内存管理,请看一看:仅在需要变量时以及在使用它们的函数循环或条件内声明和初始化变量。将程序划分为模块(一对.c和.h文件),并具有各自指定的功能。在模块中分配变量所属的位置。你不应该把变量声明放在头文件中。不管怎样,这个问题对于这个没有具体例子的网站来说太广泛了。它也是基于意见的,因为您要求“最佳方式”,而不指定标准。这些都会导致问题的解决。将相关变量组织到结构上。一般来说,不建议将所有变量作为全局变量聚集在单个头文件中。您应该为自己制定一个计划,在哪个范围内使用什么变量,并尽可能使其位于该范围的局部。例如,根据用途将其分类为本地、类范围或不同的头文件,这些头文件并非全部包含在所有位置。结构还有助于跟踪变量。对于动态内存管理,请看一看:仅在需要变量时以及在使用它们的函数循环或条件内声明和初始化变量。将程序划分为模块(一对.c和.h文件),并具有各自指定的功能。在模块中分配变量所属的位置。你不应该把变量声明放在头文件中。不管怎样,这个问题对于这个没有具体例子的网站来说太广泛了。它也是基于意见的,因为您要求“最佳方式”,而不指定标准。这两个问题中的任何一个都会导致问题的解决。为什么要将结构作为指针传递?如果希望获得与分别传递x和y类似的效果,则应传递
struct point p
。您还可以作为
const struct*point
传递。但是通过