c - 这段 C 代码是做什么的?

标签 c

我需要知道以下 c 函数的输出

bool GC_search_memaddr (void* high_add, void* low_add, void* search_add)
{
    void ** gc_ptr_to_ptr;
    void * gc_temp;
    gc_temp = high_add;
    while( gc_temp > low_add )
    { 
        gc_temp = gc_temp - 1;
        gc_ptr_to_ptr = (void**)gc_temp;
        if ((*gc_ptr_to_ptr) == search_add)
            return True;
    }
    return False;
}

在此所有 3 个输入函数都是指针。我认为这只是一个简单的基于增量的搜索函数,但问题是如果将它们全部更改为 int,函数的输出有时会发生变化。 任何人都可以告诉这里到底发生了什么......

最佳答案

指针运算可能是您的问题。线路:

gc_temp = gc_temp - 1;

将根据编译器决定的 sizeof(void) 来更改 gc_temp 的值。如果将参数和局部变量更改为 int,它们将以 1 为单位进行迭代。打开调试器,看看发生了什么。

关于c - 这段 C 代码是做什么的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4209505/

相关文章:

c++ - __declspec() 中的 "storage-class information"是什么意思?

c - 主/工作线程和信号处理

c - 如何将帧缓冲区对象绘制到默认帧缓冲区

c - CRC 算法如何适用于 CCITT16 以及如何获得适用于 CCITT8 的算法

c - 从 C 中的不规则字符串中获取所有整数

C 编程如何在以下代码中正确使用 if 语句和字符串?

c - 无法修复数组排序和输出

c - 使用c读取文件中的特定记录

c - 将结构附加到文件

c - 模式识别 - "is this a pattern?"