0

我可以执行以下操作:

int * __restrict arr = new int [100];
std::fill_n(arr + 50, 50, 1); // the arr + 50 temporary aliases arr??
std::fill_n(&arr[50],50,1); // is this ok? No aliasing?

这可能适用于 C 标准和几乎所有 c++ 编译器,但我只熟悉可视化 C++。

4

1 回答 1

1

根据https://en.wikipedia.org/wiki/Restrict

它表示在指针的生命周期内,只有它或直接从它派生的值(例如指针 + 1)将用于访问它指向的对象。

arr + 50没关系,因为它是从 ed 派生的arr,它是一个restricted 指针。

于 2013-10-27T03:07:59.597 回答