为同一个原语使用struct或not

时间:2013-12-27 19:08:38

标签: c struct

我想知道什么时候需要在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 类型 那么为什么要把它们放在一个结构中?

3 个答案:

答案 0 :(得分:2)

在以下情况下,结构将是有利的:

  • ...在多个地方使用相同的参数集。在这种情况下,将它们定义为struct可以节省输入。

  • ...参数集需要从一个地方传递到另一个地方。在这种情况下,struct将值整齐地组合在一起,并清楚地表明所有值都属于一起并形成一个连贯的数据块。

如果这些值仅在一个地方使用,我个人不会费心创建struct,虽然它不会伤害任何事情(它不会使你的代码变得更慢或任何东西)。

答案 1 :(得分:1)

只要您想将一堆变量传递给函数,或者从函数返回它们,结构就会让事情变得更加容易。此外,如果要声明多个变量集,则更容易获得结构。

如果你的程序包含20行main()而没有别的,那可能无关紧要。如果你的程序包含20000行,那么它确实很重要。

答案 2 :(得分:1)

如果它们不相关,那么拥有一个结构可能会让人感到困惑,但是你应该将它们全部static const double或者为你的结构做同样的事情。我不会在这里使用结构。

如果需要将相同的几个值一起传递给不同的函数,则结构很有用

如果要在不同的结构中使用相同的几个值,则结构是有用的

如果您需要相同的几个值作为具有相同维度的数组,那么拥有一个struct数组而不是许多单独的数组会更有用。这也可能因地点性而提高性能,内存中的所有内容都很接近,并且会减少缓存负载

如果您要编写和读取相同的几个值到文件,结构是有用的

如果它使代码更容易阅读,结构是有用的