检查指针是否指向给定数组

标签 c arrays pointers

所以我有一个函数,它返回一个指向数组 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/

相关文章:

c:检查 main.c 中是否从外部文件定义了函数

c - 为什么我的 C 结构必须添加一个奇怪的 int 并且它会影响指针?

java - 重复用户输入,同时将其添加到数组列表

c - 使用 fread 附加到缓冲区

c - 如果共享库的 exit(0) 也退出程序?

c - 如何不转到c中的下一行文件

ios - Array.append 覆盖不附加

java - 如何在java中的arraylist中获取随时间升序的日期

c - 主函数内的 sizeof(Array_Name) VS 用户定义函数内的 sizeof(Array_Name)

pointers - 指向 Result<Vec<f64>, _> 中向量第一个元素的指针已损坏