我是靠谱客的博主 超帅煎蛋,最近开发中收集的这篇文章主要介绍c语言函数参数地址传递参数,c语言函数间的参数传递,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

c语言是由若干个相对独立的函数组成,并且每个函数所完成的功能都不同,但是它们处理的数据有可能为同一批数据,所以在程序设计中就存在数据在函数间传递的问题。

1 函数调用时,实参的形式进行参数传递

1.1 函数调用的值传递

函数调用的值传递又称之为传值调用。传值调用时,实参可以是常量,可是是已经赋值的变量或表达式,甚至是另外一个函数,只要这个传入的实参是一个值,那么就可以作为实参进行传递,就可以对形参进行初始化。

传值调用的机制是系统将实参拷贝一个副本给形参,在函数调用时,系统才给形参分配内存空间,并将对应的实参值传递给形参,这样在内存空间中,就形成了一个被复制的实参副本。

在被调用函数内,形参的改变只影响副本中的参数值,而不影响调用函数中的实参值,故“传值调用”的特点 形参值不影响实际参数值。

函数调用的值传递常用于:函数不需要获取多个结果值,且参数是基本数据类型时,可以采用值传递的方式调用函数。

1.2 函数调用时采用地址传值

采用地址传值是将数据的存储地址作为函数的参数传递,而不是将数据本身传递给函数。

在这种形式中,以变量的地址作为参数调用一个函数,而被调用函数的形式参数必须是可以接受地址值的指针变量,并且它的数据类型必须与被传递数据的数据类型相同。这时,把变量的地址传递给被调用函数,被调用函数通过这个地址该变量的存储位置,直接对该存储位置中的变量的内容进行相关操作,通过这种方式被调用函数可以直接操作“传入参数的值”。

如果想让形参的改变影响实参,即函数返回时需要几个结果值,则应该采用地址传值的方式。

例:

#include “stdio.h”

void sum(float,float,float *); //函数申明

int main(){

float a1,a2;

float a1All;

printf(“请输入两个浮点数:n”);

scanf(“%f,%f”,&a1,&a2);

sum(a1,a2,&a1All); //函数传值

printf(“%f +%f =%fn”,a1,a2,a1All);

}

void sum(float _a1,float _a2,float *_a1All)

{

*_a1All = _a1+_a2;

return;

}

[root@localhost ~]#./t

请输入两个浮点数:

1.2,5.6

1.200000 +5.600000 =6.800000

2 使用返回值进行参数传递

函数被调用后可以向原函数返回一个值,返回值通过函数中的return 语句返回。

return语句在函数中的主要功能: 1 向调用函数返回一个结果值 2 把程序的控制从被调用函数返回值调用函数中。

使用return语句只能把一个返回值传递给调用函数。当要求返回的值多于一个时就不能采用return 返回值的方式,需采用函数调用时的地址传值方式。

3 使用全局变量进行参数传递

在函数外部定义一个在函数内可见的变量,然后在函数内通过直接操作全局变量来达到传值的效果。

最后

以上就是超帅煎蛋为你收集整理的c语言函数参数地址传递参数,c语言函数间的参数传递的全部内容,希望文章能够帮你解决c语言函数参数地址传递参数,c语言函数间的参数传递所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(56)

评论列表共有 0 条评论

立即
投稿
返回
顶部