【问题标题】:C : explain theory behindC:解释背后的理论
【发布时间】:2012-10-14 14:12:57
【问题描述】:

我对 C 的经验很少,但有人要求我将 C 程序转换为 R。有一点让我感到不安:

我有一个接受 int 的函数

int a

在函数中我有一个数组:

double b[3] = {

       1.8293,
       -0.592,
       2.3330,
}

后来在我拥有的功能中:

c = b[a];

谁能告诉我这条线在做什么?分配给 c 的是什么?它只是一个大小为 b 的数组,其中 b 的所有值都乘以 a 吗?

谢谢。

【问题讨论】:

  • 你需要学习C。
  • 从答案看来,该行在 C 中的作用与在 R 中的相同。您只需要注意索引在 R 中从 1 开始,而不是从 0 开始。
  • 顺便说一句,为什么要从 C 转换为 R?通常这是以相反的方式完成以提高性能。您可以从 R 调用 C 函数。
  • 是的,我现在确实觉得有点傻。关于从 C 转换为 R - 我的老板希望在 R 中完成,因为他只能使用 R。
  • 了解 R 中的 .C 函数,这样您就可以在 R 中为您的 C 代码编写一个包装器,然后您的老板可以从 R 中运行它,您无需翻译所有内容(而且它可能会更快)。

标签: c r theory


【解决方案1】:

double 数组 b 的第一个元素分配给 c(第一个元素的索引为 0)。

【讨论】:

    【解决方案2】:

    c 分配有数组b[]a th 值。

    如果a 等于1,那么c 将等于-0.592

    【讨论】:

      【解决方案3】:

      如果a包含0则c = b[a]表示将数组b[]的第一个元素赋值给a,不改变数组b

      【讨论】:

        【解决方案4】:

        你需要在 C 学习中迈出一步。

        b[a] 表示你将从 b 数组中获取索引为 a 的元素的内容

        【讨论】:

          【解决方案5】:

          这里的变量 a 是数组的索引。例如,如果 a=0,则 b[a] 是第一个元素(本例中为 1.8293)。

          通常 b[a] 从数组中提取特定元素。

          【讨论】:

            【解决方案6】:

            所以这是你描述的函数的模型(我编造了你没有提到的部分)我添加了 cmets // 来解释发生了什么:

            void foo(int a)
            {
                // define an array of 3 doubles
                //b[0] = 1.8293
                //b[1] = -0.592
                //b[2] = 2.333
            
                double b[3] = { 1.8293, -0.592, 2.3330 };
            
                double c;     // Note c is a double, because we're going to assign 
                              // one of the values from b
            
                //we're going to use a to access array b, that means a has to be 0, 1, or 2
                if(a < 3)
                   c = b[a]; 
            
                //Now c is set to one of those three values in b 
                //(depending on what value a has)
            
                return;
            }
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2015-12-31
              • 1970-01-01
              • 1970-01-01
              • 2018-09-04
              相关资源
              最近更新 更多