APP下载

浅谈C语言中函数形参为地址类型的定义形式和类型自动转换

2017-11-14田媛

电脑知识与技术 2017年29期

田媛

摘要:当函数参数为地址类型时,可以有多种定义形式,因而读者易产生迷惑,通过对各种实例的分析和证明,介绍了按各种形式定义的参数的本质;同时研究了当地址类型实参和形参类型不同时的自动转换。

关键词:地址;形式参数;实际参数;类型转换

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2017)29-0118-02

当函数形式参数(简称形参)类型为普通类型的数值类型时,参数的定义形式以及不同当形参和实参类型不符时发生的自动转换,各类教科书已进行了详尽讲解。而当函数形参类型为地址类型时,它的定义形式多种多样,而且当地址类型实参和形参发生类型不匹配时的数据转换,还很少有资料专门研究总结。

本文针对这些问题,通过举合适的例做了证明和研究,对各种地址类型的形参的形式及本质做了总结,同时研究了地址类型数据的自动转换。

1 函数形参为一级指针

当函数形参类型为一级指针(即普通变量的地址)时,它的形式通常有一级指针和普通一维数组两种形式。

void fun1(char *a) //此处等价于(char a[ ]),数组的维数无需指出

{ int i;

for(i=0;i<=5;i++)

{ putchar(*(a+i)); //此处等价于putchar(a[i]);

}

}

main( )

{ char b[]="a1b2c3";

char *p;

p=b; // 等价于 p=&b[0];

fun1(b); // 等价于fun1(p);

}

此处形参的两种定义形式char *a与 char a[ ]是等价的,形参a的本质就是一个一级指针(指向普通变量的指针)。当我们需要对数组变量操作时,形参通常写成数组的形式,更加便于读者的理解,而当对普通变量操作时,形参通常写成一级指针形式。程序执行结果如图1。

2 函数形参为数组指针

当函数形参类型为数组指针(指向一维数组的指针)时,其形式通常为数组指针(很多资料中也称为行指针)和二维数组。……

登录APP查看全文