【发布时间】:2021-11-01 11:21:09
【问题描述】:
我正在做一个关于使用函数指针概念在数组中查找元素的问题。但我在这方面面临一些问题。 这是我的代码。
#include <stdio.h>
#include <stdbool.h>
bool compare( const void* a, const void* b)
{
return (*(int*)a == *(int*)b);
}
int search(const void * arr, int arr_size, int ele_size, void* x, bool compare(const void*, const void*))
{
char* ptr = *(char**)arr;
int i;
for (i = 0; i < arr_size; i++)
{
if (compare(ptr + i * ele_size, x))
{
return i;
}
}
return -1;
}
int main()
{
int arr[] = { 2, 5, 7, 90, 70 };
int n = sizeof(arr) / sizeof(arr[0]);
int x = 7;
printf("Returned index is %d ", search(arr, n, sizeof(int), &x, compare));
return 0;
}
代码编译正常但没有输出? 这段代码有什么问题?
【问题讨论】:
-
刷新以查看格式良好的代码、干净的编译、清晰的问题陈述等。
-
@chux-ReinstateMonica 谢谢好友
-
发布的代码导致段错误事件!强烈建议使用调试器来确定段错误事件发生的确切位置(以及原因)
标签: arrays c pointers function-pointers void-pointers