我已经看到了许多并行编程代码,例如查找数组的最大值,矩阵乘法等。使用指针。我不明白为什么要使用它。示例:(shseg+(offset*sizeof(float))) = sum;

矩阵乘法的代码:

shseg = shmat(handle,NULL,0);
for(row=SIZE/2;row<SIZE;row++){

  for(column=0;column<SIZE;column++){
    sum = 0;

    for(tindex=0;tindex<SIZE;tindex++){
      sum+=a[row][tindex]*b[tindex][column];
    }

    *(shseg+(offset*sizeof(float))) = sum;
    offset++;
  }
}


谁能解释为什么使用指针?

最佳答案

这是因为您显示的示例使用共享内存API,该API为您提供了平坦的内存块,而不是浮点数组。因此,您需要手动进行所有指针操作。

您还可以将共享指针转换为float*并使用索引,如下所示:

shseg = shmat(handle,NULL,0);
float *fshseg = (float*)shseg;

...

fshseg[index++] = sum;

10-07 19:28