为什么bsearch会返回void*?

fre*_*low 10 c pointers const void bsearch

void * bsearch ( const void * key,
                 const void * base,
                 size_t num,
                 size_t size,
                 int ( * comparator ) ( const void *, const void * ) );
Run Code Online (Sandbox Code Playgroud)

如果我传入一个const void * base,不应该bsearch也返回一个const void *结果?

Dab*_*ler 8

当您搜索某些内容时,它是一个有效的请求,您可以在找到它后对其进行修改.如果搜索功能不允许您这样做,那将会限制太多.当然,这样的修改可能会打破后续搜索,但这是另一回事.

参数是const作为bsearch 本身不会修改它们的承诺,这是合理的.

  • 如果那个东西作为"const void*"给你什么呢?您已承诺不对其进行修改.您不应该要求修改的能力.但是,由于C不能超载功能,我想这是你必须要妥协的妥协. (5认同)