【发布时间】:2012-06-22 22:17:12
【问题描述】:
如果我有一个数组和一个大小,并且我想检查给定的指针是否指向数组中的一个元素,那么在标准 C 或 C++ 中是否有任何方法可以在不调用 UB 的情况下这样做?
这行得通吗?
bool is_inside(someType * array, int size, someType * other_pointer){
for (int i = 0; i < size; i++)
if (array + i == other_pointer)
return true;
return false;
}
编辑:据我了解,除了== 和!= 之外,您不能对未指向没有UB 的同一数组的指针使用比较(尽管实际上它按预期工作)。我错了吗?
【问题讨论】:
-
那你测试了吗?有用吗?
-
@Astor 测试不是确保它“不调用 UB”工作的好方法。
-
@R.MartinhoFernandes——虽然它实际上可能并不指向数组中的元素。
-
@R.MartinhoFernandes 当你这样说我想你是对的。
-
@R.马蒂尼奥费尔南德斯呢:
type T a[5];type T b;is_inside(a, 5, &b);