栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言知识点——函数参数

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言知识点——函数参数

1.值传递方式

值传递是实际参数向形式参数传递参数值的一种方式

值传递的特点是“参数值的单向传递”,对实参没有任何影响,被调用函数

2.地址传递方式

地址传递方式是实际参数向形式参数传递内存地址的一种方式。

调用函数时,将实际参数的地址赋予对应的形式参数作为其地址。由于形式参数和实际参数地址相同,即它们占用相同时间的内存空间。所以发生调用时,形式参数值的改变会影响实际参数的值。

3.数组作为函数参数

数组作为函数的参数,进行数据的传递。

一种是把数组元素作为实际参数使用:数组元素可以看成一个普通变量,因此他作为函数实际参数使用时与普通变量完全相同,在发生函数调用时,把实际参数的数组元素的值传送给形式参数,实现单向的值传递。

另一种是把数组名作为函数的形式参数和实际参数使用:

(1)用数组名做函数参数时,要求形式参数和相对应的实际参数都必须是类型相同的数组,都必须有明确的数组说明。

(2)在用数组名做函数参数时,传递的不是值,因为函数名就是数组的首地址,因此在数组名作函数参数时传送的是地址,也就是说把实际参数数组的首地址赋予形式参数数组名。形式参数数组名取得该首地址之后,也就等于获得了实际的数组。

4.指针变量作为函数参数

函数的参数可以是整型,实型,字符型等基本数据类型,还可以是指针类型。使用指针作为函数的参数,实际上向函数传递的是变量的地址。

(1)C语言中实参变量和形参变量之间的数据传递是单向的“值传递”方式,用指针变量作为函数参数时同样要遵循这一规则。

(2)不可能通过执行调用函数来改变实参指针变量的值,但是可以改变实参指针变量所指变量的值

注意:

p是指针变量,*p是p指向的变量的值。

假设有一个形参和实参那么就有

这两者的的区别:

void swap(int* p1, int* p2)
{
    int* p;        
    p = p1;        
    p1 = p2;       //使p1和p2的值互换。
    p2 = p;
}

void swap(int* p1, int* p2)
{
    int p;
    p = *p1;
    *p1 = *p2;     //*p1,*p2交换意味着p1和p2指向的存储单元的值进行了交换
    *p2 = p;
}

通常用整型变量而非指针变量作为*p1和*p2进行交换的辅助变量。
 

5.结构体数组作为函数参数

结构体数组做函数参数,可以分为两种情况:结构体数组名作为函数参数和结构体数组元素作为函数参数。

结构体数组的定义和初始化:

1.先定义结构体类型,再定义结构体数组。

struct student

{

        int num;

        char name[20];

        char sex;

        float score;

};

struct student stu[30];

2.在定义结构体类型的同时定义结构体数组。

struct student

{

        int num;

        char name[20];

        char sex;

        float score;

}stu[30];

3.直接定义结构体数组。

struct 

{

        int num;

        char name[20];

        char sex;

        float score;

} stu[30];

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/997277.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号