C++ 自定义函数中怎么调用各种形式的数据

小白实在不懂。学得很迷。
比如说调用动态数组,调用普通数组,需要对数组进行操作,调用的形式。*,(),&已经傻傻分不清。
比如说能否直接调用字符串。

通过下面的例子来说明:

//定义一个函数,输出数组a的数据,fun和fun2是一样的效果
void fun(int a[],int n)
{
    int i =0;
    for(i=0;i<n;i++)
        cout << a[i] << " ";
}

void fun2(int*a,int n)
{
    int i =0;
    for(i=0;i<n;i++)
        cout << a[i] << " ";
}


int a[5]={1,2,3,4,5};
fun(a,5); //或者 fun2(a,5); 是一样的


//再来说&
void fun3(int* n )
{
    *n = *n+1;
}
void fun4(int &n) //这里&表示引用
{
    n = n+1;
}
int c = 4;
fun3(&c);  //这里&表示取地址
fun4(c);  // fun3 和fun4两个函数的效果是一样的。

调用字符串当然可以,自定义函数参数写成char *就可以了