二级指针、数组指针、二维数组、指针数组作为函数形参时可传入的实参

来源:互联网 发布:python getopt函数 编辑:程序博客网 时间:2024/06/08 08:46

1、传参规则:

a.当二级指针作为函数形参时,能作为函数实参的是二级指针,指针数组,一级指针的地址
b.当数组指针作为函数形参时,能作为函数实参的是二维数组,数组指针
c.当二维数组作为函数形参时,能作为函数实参的是二维数组,数组指针
d.当指针数组作为函数形参时,能作为函数实参的是指针数组,二级指针,一级指针的地址

2、实例验证:

#include <stdio.h>#include <stdlib.h>void fun1(int **pp){    printf("fun1\n");}void fun2(int(*a_p)[5]){    printf("fun2\n");}void fun3(int t_d_a[][5]){    printf("fun3\n");}void fun4(int *p_a[5]){    printf("fun4\n");}int main(){    int *p_a[5];          //指针数组    int **pp = NULL;      //二级指针    int *p = NULL;        //一级指针    int t_d_a[5][5];      //二维数组    int a[5];             //一维数组    int(*a_p)[5] = &a;    //数组指针    fun1(p_a);    fun1(pp);    fun1(&p);    //fun1(t_d_a);    //fun1(a_p);    printf("\n");    //fun2(p_a);    //fun2(pp);    //fun2(&p);    fun2(t_d_a);    fun2(a_p);    printf("\n");    //fun3(p_a);    //fun3(pp);    //fun3(&p);    fun3(t_d_a);    fun3(a_p);    printf("\n");    fun4(p_a);    fun4(pp);    fun4(&p);    //fun4(t_d_a);    //fun4(a_p);    printf("\n");    system("pause");    return 0;}

以上代码我放开注释的任意一条语句,都会报错为形参与实参的类型不兼容。
PS:调试环境为vs2013

2 0
原创粉丝点击