繁体   English   中英

是否对同一基元使用struct

[英]To use struct or not for same primitives

我想知道何时需要在c中使用struct吗?

更准确地说-如果我具有以下原始数据类型-最佳解决方案是什么

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类型的,那么为什么要把它们放在一个struct中呢?

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

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

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

如果只在一个地方使用这些值,我个人就不会打扰创建struct ,尽管这样做不会有任何伤害(不会使您的代码变慢或变慢)。

想要将一堆变量传递给函数或从函数中返回它们时,结构使您的工作变得简单得多。 此外,如果要声明多个变量集,则拥有一个结构会更容易。

如果您的程序由20行main()组成,则别无其他。 如果您的程序由20000行组成,那确实很重要。

如果它们不相关,那么拥有一个结构可能会令人困惑,但是您应该使它们全部为static const double或者对您的结构执行相同的操作。 我不会在这里使用结构。

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

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

如果您需要相同的几个值作为具有相同维的数组,那么拥有一个结构数组而不是许多单独的数组会更有用。 由于局部性,这也可能会提高性能,所有内容都在内存中并且会导致较少的缓存负载

如果要在文件中写入和读取相同的几个值,则结构很有用

如果它使代码更易于阅读,则结构很有用

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM