c - 在 C 中使用指针相乘矩阵

标签 c pointers matrix multiplication

我正在尝试创建一个如下所示的方法:
void Multiply(double *A, double *B, double *C, int N);

它是一个计算C = A * B的函数。
A、B 和 C 是 NxN(方)矩阵,我必须通过指针来完成。

我编写的代码如下:

int Multiply(double *A, double *B, double *C, int N){
    int i,j,k;
    double sum;
    for (i = 0; i < N; i++) {
      for (j = 0; j < N; j++) {
         sum = 0;
         for (k = 0; k < N; k++) {

            sum = sum + (*(A+i*N+k)) * (*(B+k*N+i));
         }
         *(C+i*N+j) = sum;
      }
   }
}

它不会导致任何错误,而且也不起作用。
我看不出问题所在。请问有人可以帮忙吗?

最佳答案

C

i,j 元素是 A 的行 i 乘以 j B 列。循环的核心应该是:

sum = sum + (*(A+i*N+k)) * (*(B+k*N+j));

关于c - 在 C 中使用指针相乘矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27148616/

相关文章:

c++ - 警告 : pointer of type ‘void *’ used in arithmetic

c++ - 因shared_ptr而崩溃

python - 为什么我的列表没有按照预期的方式改变?

C对指针和数组的混淆

objective-c - 创建编程语言问题

c - 为什么这个简单的链表程序会出现段错误?

python - 在Python中将矩阵列表转换为仅一个2D矩阵

c++ - 如何获取 libutils.so

c - 为什么我的这段代码的 malloc 版本会失败?

c++ - OpenCL 计算与顺序算法的输出不匹配