我想知道什么时候需要在c中使用结构?
更确切地说 - 如果我有以下原始数据类型 - 什么是最佳解决方案
1)在实际函数中声明并初始化这些原始数据类型
2)在结构中声明这些变量,然后在实际函数中初始化它们。
我正在制作一个程序,我需要计算累积分布函数(CDF)的某些值,其中一种方法是使多项式近似。执行此操作需要以下值:
k = 1 / (1 + yx)
y = 0.33267
a1 = 0.4361836
a2 = -0.1201676
a3 = 0.9372980
我已声明并初始化这些值如下:
double k = 0;
double y = 0.2316419;
double a1 = 0.319381530;
double a2 = -0.356563782;
double a3 = 1.781477937;
我的问题可能听起来有点愚蠢 - 如果我应该将这些值放在结构中,那就完全可以了?
在头文件中:
struct cdf {
double k;
double y;
double a1;
double a2;
double a3;
};
typedef struct cdf Cdf;
然后我可以通过
获取这些数据类型 cdf.k
例如
那么 - 如果我将变量一起包含在一个结构中,或者它是否完全不必要,它是否会使我的程序更具可读性?所有基元都是 double 类型 那么为什么要把它们放在一个结构中?
答案 0 :(得分:2)
在以下情况下,结构将是有利的:
...在多个地方使用相同的参数集。在这种情况下,将它们定义为struct
可以节省输入。
...参数集需要从一个地方传递到另一个地方。在这种情况下,struct
将值整齐地组合在一起,并清楚地表明所有值都属于一起并形成一个连贯的数据块。
如果这些值仅在一个地方使用,我个人不会费心创建struct
,虽然它不会伤害任何事情(它不会使你的代码变得更慢或任何东西)。
答案 1 :(得分:1)
只要您想将一堆变量传递给函数,或者从函数返回它们,结构就会让事情变得更加容易。此外,如果要声明多个变量集,则更容易获得结构。
如果你的程序包含20行main()而没有别的,那可能无关紧要。如果你的程序包含20000行,那么它确实很重要。
答案 2 :(得分:1)
如果它们不相关,那么拥有一个结构可能会让人感到困惑,但是你应该将它们全部static const double
或者为你的结构做同样的事情。我不会在这里使用结构。
如果需要将相同的几个值一起传递给不同的函数,则结构很有用
如果要在不同的结构中使用相同的几个值,则结构是有用的
如果您需要相同的几个值作为具有相同维度的数组,那么拥有一个struct数组而不是许多单独的数组会更有用。这也可能因地点性而提高性能,内存中的所有内容都很接近,并且会减少缓存负载
如果您要编写和读取相同的几个值到文件,结构是有用的
如果它使代码更容易阅读,结构是有用的