二分查找,为什么数组里面有6,但是还是会打印出notfound呢

数组作为函数的形参,退化为指针,所以在int index(int a[], int target)函数里用 sizeof()得到的是一个指针的大小值,不是数组的长度值。
修改如下,改动处见注释,供参考:
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int index(int a[], int n, int target) // 修改
{
int i = 0, j = n - 1; // 修改
while (i <= j) {
int m = i + (j - i) / 2;
if (a[m] > target)
j = m - 1;
else if (a[m] < target)
i = m + 1;
else
return m;
}
return -1;
}
int main()
{
int a[3] = {1,3,6};
int res = index(a, 3, 6); // 修改
if (res != -1)
printf("%d", res);
else
printf("not found");
return 0;
}