C で Pointerを使用する場合、最初のIdentifierrestrict
を使用して変数を変更しても問題ありませんか? 例えば:
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)
... fooPtrが作成された後、fooを介してfooの値を変更しました。restrict
パート 1は問題ないように見えます。パート 2について混乱しています。そして、私が理解していることからrestrict
、パート3は悪いです(コンパイラはそれを許可しますが、その動作は未定義であり、そうしないのはプログラマ次第です)。