可以重新排序“a-> b = 1; c = a”吗?

时间:2013-12-31 07:56:20

标签: c memory

似乎a=1;b=a;无法重新排序,因为存在明显的依赖关系。

不确定a->b=1; c=a

2 个答案:

答案 0 :(得分:2)

a->b = 1表示a是指向某个结构的指针,该结构具有名为b的字段,因此b=a生成编译器错误b不存在定义,或b被定义为指向struct的指针,因此它们完全不相关。

struct somestr
{
  int b;
};
...
...
struct somestr *a;
...
...
a->b = 1; /* OK */
b = a;  /* symbol "b" not found */
...
...
...
struct somestr *a, *b;
...
...
a->b = 1; /* OK */
b = a;    /* OK too */

答案 1 :(得分:1)

a->b=1; c=a;

当你现在编写它时,假设ac是指向相同结构类型的指针,则表示{{1}指向的结构的b字段设置为1。

然后,让指针a指向相同的结构。

这些操作可以明显互换,因为它们不会相互影响。无论对方是否被执行,两者都以相同的方式工作。