关于#c语言#的问题:不理解这个函数

问题遇到的现象和发生背景: 听网课的时候说数组传参给自己写的那个函数传的是第一个元素的地址,既然如此那个函数为什么能够查找出主函数里面定义的那个数组里要找的数字啊,函数都没有接收到那个数组他是怎么知道查找的东西在哪的?求解
用代码块功能插入代码,请勿粘贴截图
我想要达到的结果

```c
#include
int binary_search(int arr[],int k,int sz) //数组传参过去传的是第一个元素的地址
{
int left=0;
int right=sz-1;
while(left<=right)
{
int mid=(left+right)/2;
if(arr[mid]
{
left=mid+1;
}
else if(arr[mid]>k)
{
right=mid-1;
}
else
{
return mid;
}
}
return -1;
}
int main()
{
int a[]={1,2,3,4,7,6,5,8,9,10};
int k=7;
int sz=sizeof(a)/sizeof(a[0]);
int ret= binary_search(a,k,sz);//从数组a中找K,找到了返回下标,没找到返回-1
if(ret==-1)
printf("对不起没有找到");
else
printf("找到了该数字,下标为: %d\n",ret);
return 0;
}

```********

传的是第一个元素的地址,假设为a,但是我们是可以通过a[i]的形式去访问数组中的其他元素的,这是指针的语法

数组的存储空间是连续分配的,如果知道了数组的第一个元素的地址,就可以顺藤摸瓜知道第2个第3个,就像一排宿舍一样,知道了100房间在哪,101不就在它隔壁吗。