一、数组传参
1》一维数组传参
1、
void fun ( int a [ ],int n) //以定义数组的方式确定形参,n--数组元素个数
{};
int main(void)
{
int a[5];
fun(a,5); // 实参为数组名 和元素个数
}
2、
void fun( int *a ,int n) //采用指针的形式定义形参,n--元素个数
{};
int main()
{
int a[5];
fun (a,5); // 数组名即为地址,所以形参可以用相应的一级指针接收,元素个数
}
2》二维数组传参
1、
void fun( int a[ i ] [ j ],int i ,int j ) //以定义数组的方式 设置形参 ,i 可以省略 但是 j 不可省略
{};
int main (void)
{
int a [ i ] [ j ];
fun( a, i ,j);
}
2、
void fun ( int (*p)[ j ])//二维数组同一维数组不同 得用 数组指针接收
{};
int main()
{
int a [ i ] [ j ] ;
fun( a ); // 传递数组名 实际上是第一行 一维数组的地址
}
3》字符串数组传参
void (char *ch) //指针形式
{};
void (char []) //数组形式
{};
int main ()
{
char a[]="hello world!!";
fun( a ); //只传数组名
}
二、指针传参
1》一级指针传参
1、
void (int *p) //一级指针接收即可
{};
int main()
{
int * p;
int a;
p=&a;
fun( p ); //这属于值传递,把p存放的地址传递给函数 ,不可以改变p 的值;
}
2、
void (int **p)//二级指针接收
{};
int main()
{
int *p;
int a;
p = &a;
fun ( &p ) ; //这属于地址传递,而 p 本身就是一个指针所以需要二级指针接收
}