在C中使用restrict
指針時,是否可以使用其初始值標識符更改變量?例如:在C中使用限制指針時,是否可以使用其初始標識符更改變量?
int foo = 0;
int * restrict fooPtr = &foo;
++(*fooPtr); // Part 1: foo is 1 (OK)
++foo; // Part 2: foo is 2 (Is this OK?)
int * fooPtr2 = &foo;
++(*fooPtr2); // Part 3: foo is 3 (BAD: You shouldn't access via a second pointer)
...我的restrict
fooPtr創建之後通過富改變FOO的價值。
Part 1對我來說還行。我很困惑第2部分。並從我所瞭解的restrict
,第3部分是不好的(編譯器允許它,但其行爲是不確定的,這取決於程序員不這樣做)。
非常感謝史蒂夫! :) – 2010-10-14 18:18:05
你的意思是說,如果我們想通過它自己的名字和指針訪問X對象,我們可能會有錯誤? – 2010-10-14 18:23:39
這個優化又是如何完成的? – 2010-10-14 18:25:12