我需要知道以下 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/