C++基础学习(06)——函数

函数定义

C++ 中的函数定义的一般形式如下:

return_type function_name( parameter list )
{
   body of the function
}

在 C++ 中,函数由一个函数头和一个函数主体组成。下面列出一个函数的所有组成部分:

  • 返回类型:一个函数可以返回一个值。return_type 是函数返回的值的数据类型。有些函数执行所需的操作而不返回值,在这种情况下,return_type 是关键字 void。
  • 函数名称:这是函数的实际名称。函数名和参数列表一起构成了函数签名。
  • 参数:参数就像是占位符。当函数被调用时,您向参数传递一个值,这个值被称为实际参数。参数列表包括函数参数的类型、顺序、数量。参数是可选的,也就是说,函数可能不包含参数。
  • 函数主体:函数主体包含一组定义函数执行任务的语句。

举一个例子
以下是 max() 函数的源代码。该函数有两个参数 num1 和 num2,会返回这两个数中较大的那个数:

// 函数返回两个数中较大的那个数
 
int max(int num1, int num2) 
{
   // 局部变量声明
   int result;
 
   if (num1 > num2)
      result = num1;
   else
      result = num2;
 
   return result; 
}

函数声明

函数声明包括以下几个部分:

return_type function_name( parameter list );

针对上面定义的函数 max(),以下是函数声明:

int max(int num1, int num2);

在函数声明中,参数的名称并不重要,只有参数的类型是必需的,因此下面也是有效的声明:

int max(int, int);

当在一个源文件中定义函数且在另一个文件中调用函数时,函数声明是必需的。在这种情况下,您应该在调用函数的文件顶部声明函数。

调用函数

举一个例子

#include <iostream>
using namespace std;
 
// 函数声明
int max(int num1, int num2);
 
int main ()
{
   // 局部变量声明
   int a = 100;
   int b = 200;
   int ret;
 
   // 调用函数来获取最大值
   ret = max(a, b);
 
   cout << "Max value is : " << ret << endl;
 
   return 0;
}
 
// 函数返回两个数中较大的那个数
int max(int num1, int num2) 
{
   // 局部变量声明
   int result;
 
   if (num1 > num2)
      result = num1;
   else
      result = num2;
 
   return result; 
}

函数参数

如果函数要使用参数,则必须声明接受参数值的变量。这些变量称为函数的形式参数。
形式参数就像函数内的其他局部变量,在进入函数时被创建,退出函数时被销毁。
有三种向函数传递参数的方式:

  • 传值
  • 传址
  • 传引用

传值

向函数传递参数的传值调用方法,把参数的实际值复制给函数的形式参数。在这种情况下,修改函数内的形式参数不会影响实际参数。
默认情况下,C++ 使用传值调用方法来传递参数。一般来说,这意味着函数内的代码不会改变用于调用函数的实际参数。
举个例子

#include <iostream>
using namespace std;

void swap( int x, int y );

int main()
{
	int x, y;
	
	cout << "请输入两个不同的值:";	
	cin >> x >> y;
	
	swap( x, y );
	
	cout << "调换后输出:" << x << ' ' << y << "\n\n"; 
	return 0;
}

void swap( int x, int y )
{
	int temp;	
	temp = x;	// 保存 x 的值 
	x = y;		// 把 y 赋值给 x 
	y = temp;	// 把 x 赋值给 y 
}

还有另一种较好的写法,可以使用异或运算交换两数的值:

#include <iostream>
using namespace std;

void swap( int x, int y );

 int main()
{
	int x, y;
	
	cout << "请输入两个不同的值:";	
	cin >> x >> y;
	
	swap( x, y );
	
	cout << "调换后输出:" << x << ' ' << y << "\n\n"; 
	return 0;
}

void swap( int x, int y )
{
	x ^= y;
	y ^= x;
	x ^= y;
	return 0;
}

传址

向函数传递参数的指针调用方法,把参数的地址复制给形式参数。在函数内,该地址用于访问调用中要用到的实际参数。这意味着,修改形式参数会影响实际参数。
按指针传递值,参数指针被传递给函数,就像传递其他值给函数一样。
还是上一个例子,我们可以这么写

#include <iostream>
using namespace std;

void swap( int *x, int *y );

int main()
{
	int x, y;
	
	cout << "请输入两个不同的值:";	
	cin >> x >> y;
	
	swap( &x, &y );
	
	cout << "调换后输出:" << x << ' ' << y << "\n\n"; 
	return 0;
}

void swap( int *x, int *y )
{
	int temp;	
	temp = *x;	// 保存地址 x 的值 
	*x = *y;	// 把 y 赋值给 x 
	*y = temp;	// 把 x 赋值给 y 
	return 0;
}
#include <iostream>

void swap( int *x, int *y );

int main()
{
	int x, y;
	
	cout << "请输入两个不同的值:";	
	cin >> x >> y;
	
	swap( &x, &y );
	
	cout << "调换后输出:" << x << ' ' << y << "\n\n"; 
	return 0;
}

void swap( int *x, int *y )
{
	*x ^= *y;
	*y ^= *x;
	*x ^= *y;
}

传引用

向函数传递参数的引用调用方法,把引用的地址复制给形式参数。在函数内,该引用用于访问调用中要用到的实际参数。这意味着,修改形式参数会影响实际参数。

按引用传递值,参数引用被传递给函数,就像传递其他值给函数一样。

#include <iostream>
using namespace std;

void swap( int &x, int &y );

int main()
{
	int x, y;
	
	cout << "请输入两个不同的值:";	
	cin >> x >> y;
	
	swap( x, y );
	
	cout << "调换后输出:" << x << ' ' << y << "\n\n"; 
	return 0;
}

void swap( int &x, int &y )
{
	int temp;	
	temp = x;	//保存 x 的值 
	x = y;		//把 y 赋值给 x 
	y = temp;	// 把 x 赋值给 y 
}
#include <iostream>
using namespace std;

void swap( int &x, int &y );

 int main()
{
	int x, y;
	
	cout << "请输入两个不同的值:";	
	cin >> x >> y;
	
	swap( x, y );
	
	cout << "调换后输出:" << x << ' ' << y << "\n\n"; 
	return 0;
}

void swap( int &x, int &y )
{
	x ^= y;
	y ^= x;
	x ^= y;
	return 0;
}
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值