所以我有一个函数,它返回一个指向数组 A 中的元素的指针。我有另一个函数,该函数将该指针作为参数。但是,我需要该函数能够处理可能传递完全任意指针的可能性。
有没有办法能够检测指针是否指向结构内的某个位置?在这种情况下,我的数组 A?
我见过有关 C++ 的类似问题,但没有见过有关 C 的问题。
最佳答案
唯一可移植的方法是对指针的所有可能的有效值使用相等测试。例如:
int A[10];
bool points_to_A(int *ptr)
{
for (int i = 0; i < 10; ++i)
if ( ptr == &A[i] )
return true;
return false;
}
请注意,对两个指针使用关系运算符(例如 <
)或减法是未定义的行为,除非这两个指针实际上指向同一数组的元素(或超出末尾的元素)。
关于检查指针是否指向给定数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40710527/