0

我见过很多并行编程代码,比如查找数组的最大值、矩阵乘法等。使用指针。我不明白为什么要使用它。例子:(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++;
  }
}

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

4

2 回答 2

1

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

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

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

...

fshseg[index++] = sum;
于 2012-05-24T13:01:14.180 回答
0

好吧,您有一个已分配的内存空间与您的程序共享,您将一直通过内存,如果您不使用指针,您将无法获取内存地址值,这就是为什么你需要使用它。

于 2012-05-24T13:03:39.380 回答