任何人都可以举例说明这些陈述。我在某个地方读到它,其中提到不建议使用这种指针。 (这些基本上是为了帮助自动并行化,如果我们避免使用这种指针。如果有人能够对此有所了解,那将会很棒。)
1)“除了堆分配站点之外的指针强制转换。”
2)“指针算术。(当我们访问指针指向的区域时,使用 指针变量上的解引用运算符(*)或索引运算符([]) 没有更新指针值。)“
3)“更新条件分支中的指针值或除堆之外的循环 分配网站。“
4)“将函数的参数作为指向不同偏移量的指针传递给它 数组的维度。 (因此,函数参数指向的区域 被叫者永远不会重叠。)“
5)“将堆对象重用为临时缓冲区。(重用堆可以是一个 并行提取的障碍,因为它更难以分析 重用堆对象而不是重用ordinaly变量。)“
6)“索引访问结构数组的数组成员。(如果数组为 结构有一个数组成员,传递结构数组的一个元素 作为函数的参数并访问被调用函数中的成员。)“
答案 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