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

函数的调用详解

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

函数的调用详解

函数的调用详解
  • 调用函数:
    • 1.传值调用:
    • 2.传址调用:
    • 3.嵌套调用:

调用函数:

函数名(参数值);

  • ()起到了表示函数调用的重要作用,即使没有参数也需要(),如果有参数,则需要给出的正确的数量,类型和顺序,这些值会按照顺序依次被用来初始化函数中的参数
  • 调用函数时给的值与参数的类型不匹配是C语言传统上最大的漏洞,编译器总是悄悄替你把类型转换好,但是这很可能不是你所期望的,后续的语言,C++/Java在这方面很严格。
1.传值调用:

顾名思义,传值调用就是把实参变量的值传给被调用函数的形参变量。

void swap(int x,int y);

int main()
{
	int a =5;
	int b=6;
	swap(a,b);
	printf("a=%d b=%dn",a,b);
	return 0 ;
}
void swap(int x,int y)
{
	int t = x;
	x = y;
	y = t;
}

这样的代码显然不能交换变量a和变量b的值,因为每个函数都有它自己的变量空间,参数也位于这个独立的空间中,和其它函数没有关系。C语言在调用函数时,只能将变量的值传递给函数,而非将整个变量传递给函数,如这次调用,只是把main函数实参变量a和变量b的值传递给了调用函数的形参变量x和变量y,swap函数只是对自己变量空间中的变量x和y做了变换,并未对main函数变量空间中的变量a,b做出任何动作。

2.传址调用:

顾名思义,就是把实参变量的地址传递给被调用函数的形参变量,这种传参方式可以让函数和函数外边的变量建立起正真的联系,也就是函数内部可以直接通过地址操作函数外部的变量。

void swap(int *px, int *py)
{
	int tmp = 0;
	tmp = *px;
	*px = *py;
	*py = tmp;
}
int main()
{
	int a = 1;
	int b = 2;
	
	swap(&a, &b);
	printf("a = %d b = %dn", a, b);//a = 2,b = 1
	
	return 0;
}

上述swap函数的形参是指针变量,传过去的是地址,在上述代码调用swap函数的时候,是把a和b的地址传了过去,这样在swap函数中就可以通过地址直接对main函数中的变量进行操作,所以这个swap函数可以改变main函数中的变量值。

3.嵌套调用:

就是某个函数调用一个函数,该函数中又调用着其他函数。

#include 
//对调用函数的原型声明
void loveYouTooMuch();
void loveYou();

int main()
{
	loveYouTooMuch();//调用函数

	return 0;
}

void loveYouTooMuch()//主函数调用该函数,该函数又调用了另一个函数
{
	loveYou();
}

void loveYou()
{
	printf("I love You");
}

注: 函数不能嵌套定义,但是可以嵌套调用

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

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

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