为什么从下限减去一个数组会返回一个取消引用的值

  • 本文关键字:一个 返回 取消 引用 数组 c++
  • 更新时间 :
  • 英文 :

int arr[] = {0, 1, 15, 22, 100, 101, 232, 2323};
int n = sizeof(arr) / sizeof(arr[0]);
int x = 232;
auto a = lower_bound(arr, arr + n, x) - arr;
if (a < n && arr[a] == x) {
// x found at index a
cout << x << " is found " << "at index: " << a << endl;
}

lower_bound返回元素的地址,但如果我们从中减去-arr,它就会取消引用指针。为什么会这样?

arr是一个数组,当在表达式中使用数组时,它可以衰减为指针。由于lower_bound返回一个指针(这是原始数组的迭代器类型(,而arr衰减为一个指针,因此您将从数组开头的地址中减去找到的对象的地址,从而获得它们之间的元素数。根本没有取消引用。

最新更新