在 C 中使用restrict
指针时,可以使用其初始标识符更改变量吗?例如:
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 部分很糟糕(编译器允许这样做,但它的行为是未定义的,程序员不这样做)。