最详细的 c语言传参详解

一、数组传参

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 本身就是一个指针所以需要二级指针接收

        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值