建议不要使用指针。特别是用于帮助自动并行化

时间:2011-03-05 08:03:57

标签: c pointers parallel-processing

任何人都可以举例说明这些陈述。我在某个地方读到它,其中提到不建议使用这种指针。 (这些基本上是为了帮助自动并行化,如果我们避免使用这种指针。如果有人能够对此有所了解,那将会很棒。)

1)“除了堆分配站点之外的指针强制转换。”

2)“指针算术。(当我们访问指针指向的区域时,使用 指针变量上的解引用运算符(*)或索引运算符([]) 没有更新指针值。)“

3)“更新条件分支中的指针值或除堆之外的循环 分配网站。“

4)“将函数的参数作为指向不同偏移量的指针传递给它 数组的维度。 (因此,函数参数指向的区域 被叫者永远不会重叠。)“

5)“将堆对象重用为临时缓冲区。(重用堆可以是一个 并行提取的障碍,因为它更难以分析 重用堆对象而不是重用ordinaly变量。)“

6)“索引访问结构数组的数组成员。(如果数组为 结构有一个数组成员,传递结构数组的一个元素 作为函数的参数并访问被调用函数中的成员。)“

1 个答案:

答案 0 :(得分:1)

2)

char *x = "lsdjjasd", *y;
int i;

// Access by index (x still points to beginning of string)
for (i=0; x[i]; i++) {
  x[i] = toupper(x[i]);
}

// Pointer arithemtic (modifying x) 
for (; *x; x++) {
  *x = toupper(*x);
}
// x now points to the end of the string