指针没有更新值

Pointer isn't updating value

本文关键字:更新 指针      更新时间:2023-10-16

我正在运行这个程序来计算两个向量的点积…我使用*sum作为结果,但在将其初始化为零后,循环后的值永远不会更新?

extern "C" {
    void attempt2( double * x , double * y, int * len , double * sum , int * ToF){
        *sum = 0;
        for ( int i = 0; i < *len ; i++ ){
            *sum += x[ i ]*y[ i ];
        } // 
    }
}

然后在R中使用。c .

调用它。
x <- c(1.1, 2.1, 3.9)
y <- c(3.0, 1.1, 7.2)
len <- length(x)
Tf <- TRUE
lst <- .C("attempt2", x = x,
          len = len,
          sum = as.numeric(0),
          ToF = as.logical(Tf))
lst

有什么明显的我做错了吗?

你应该在参数后面加上y:

lst <- .C("attempt2", x = x, y = y,
          len = len,
          sum = as.numeric(0),
          ToF = as.logical(Tf))

也不确定你是否需要ToF