关于数组成员作为参数传递的有关问题

关于数组成员作为参数传递的问题
有一段代码

void fun1()
{
      int tmp[100];
      int index = 5;
      fun2(tmp + index);
}
int fun2(int *tm)
{
tm[0] = 123;
tm[1] = 55;
        return 1;  
}

请问这段代码中函数参数传递的是数组的地址还是tmp[5]的地址?
如果是tmp[5]的地址,那调用的函数中tm[0],tm[1]又是对什么赋值?
------解决思路----------------------
fun2(tmp + index);  //数组名在传参的时候会自动降级为指针, 所以fun2中, 传进来的是tmp[5]的地址, 赋值的区域相对tmp来说就是tmp[5], tmp[6],

如果这样写func2((&tmp) + index); //对数组名取地址, 那么这个指针类型就变了, +index就表示跳过5个数组的大小,而不是5个int
------解决思路----------------------
我闲着没事,把代码弄了下,楼上是正确的,楼主你可以结贴了
#include <iostream>
using namespace std;
void fun1();
int fun2(int *tm);
void fun1()
{
int tmp[100];
int index = 5;
cout<<"tmp[5]的地址"<<&tmp[5]<<endl;
cout<<"tmp[6]的地址"<<&tmp[6]<<endl;
cout<<"tmp[7]的地址"<<&tmp[7]<<endl;
fun2(tmp + index);
}
int fun2(int *tm)
{
cout<<"传入指针的地址"<<tm<<endl;
cout<<"传入指针tm[0]的地址"<<&tm[0]<<endl;
cout<<"传入指针tm[1]的地址"<<&tm[1]<<endl;
tm[0] = 123;
tm[1] = 55;
return 1;  
}
void main()
{
fun1();
while(1);
}