При использовании указателя restrict
в C, нормально ли изменять переменную, используя ее начальный Идентификатор? Например:При использовании ограничивающего указателя в 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 был создан.
Часть 1 выглядит хорошо для меня. Я смущен насчет Часть 2. И из того, что я понимаю о restrict
, , часть 3 плохая (компилятор разрешает ее, но ее поведение не определено, и программисту это не нужно делать).
Спасибо большое Стив! :) –
Вы хотите сказать, что если мы хотим получить доступ к объекту X через свое собственное имя и указатель, у нас может быть ошибка? –
Также как делается эта оптимизация? –