为什么这个调试用sizeof在这里发生了错误
我是用int a[1]={5}来试的
#include<stdio.h>
int left_bound(int nums[],int target){
int length_nums=sizeof(nums)/sizeof(nums[0]);
if(length_nums==0) return -1;
int left=0;
int right=length_nums; //右开区间
while(left<right) //因为是左闭右开区间,若left=right查找结束
{
int mid=(left+(right-left))/2;//防止溢出
if(nums[mid]==target) right =mid;//要找到右侧相等的数 如上图
//原来写法是return mid;
else if(nums[mid]<target) left=mid+1;
else if(nums[mid]>target) right =mid;
}
if(left==length_nums||nums[left]!=target) return -1; // 检查出界情况
return left; //退出的时候left=right
}
int main(){
int a[1]={5};
printf("%d",left_bound(a,5));
}