学习笔记——引用形参、有返回值函数 *

本文介绍了C++中函数的基本概念,包括引用形参的作用及使用方法,以及如何定义有返回值的函数。通过具体实例展示了如何计算圆的面积和判断质数,进一步实现了求解指定范围内所有质数之和的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、引用形参

       函数定义时,引用形参的类型后面(即参数名字前面)需要加&,例如 void f(int& a)。 当形参是引用形参时,实参必须是相同数据类型的左值(形参是非引用形参时,实参必须是 右值)。要注意,在函数调用时,实参名字前面不要加&,无论对应的是非引用形参还是引用 形参。

当形参定义成引用形参时,那么形参和实参事实上是同一个左值。如果在函数中形参的 值发生了改变,会同时影响实参的值。(如果是非引用实参,只在函数调用时把实参值赋值给形参,此后函数中任何形参的变化都不会影响实参的值)

二、有返回值函数

1、如果函数 f 定义成 void f(…),那么称 f 是无返回值的函数(因为 void 表示无返回值)。如 果 void 改成 int、double、char、bool 等类型,则称 f 是有返回值的函数。

2、有返回值的函数需要在函数中使用 return 语句返回具体的值,这个值由函数的功能决定。 无返回值的函数通常不会有 return 语句,如果需要也可以使用 return;

3、在任何情况下,一个函数执行到 return 语句就会立即结束该函数的运行,无论函数中是 否还有未执行完的代码。

【例 6】圆的面积计算公式是𝑆 = 𝜋𝑟
2。写一个函数 double getArea(double r),可以根据半
径 r 返回圆的面积。在主函数中输出半径为 10 和半径为 5.5 的圆的面积。其中 π 的值使用
3.14。
#include<iostream>
using namespace std;
double getArea(double r)
{
const double pi = 3.14;
return pi*r*r;
}
int main()
{
cout << getArea(10) << endl;
cout << getArea(5.5) << endl;
return 0;
}
【说明】
1、const 关键字表明,pi 是常量。常量必须要在定义时提供初始值(3.14),并且在随后的
代码中不可以改变这个值。
2、注意这个函数的返回值得是 double,否则会有精度损失。
【例 7】输入一个正整数 n,然后输入 n 个整数,如果该整数是质数则输出 Yes,否则输出
No,每个整数判断输出完都要换行。
#include<iostream>
#include<cmath>
using namespace std;
bool isPrime(int n)
{
if (n < 2)
{
return false;
}
for (int i = 2; i <= sqrt(n); i++)
{
if (n % i == 0)
{
return false;
}
}
return true;
}
int main()
{
int n;
cin >> n;
while (n--)
{
int a;
cin >> a;
if (isPrime(a))
{
cout << "Yes" << endl;
}
else
{
cout << "No" << endl;
}
}
return 0;
}
【说明】
1、bool 类型返回值的函数通常用来判定一件事是真还是假,函数调用时当作 bool 类型的
右值。
2、bool 类型返回值的函数通常应该作为 if(...)里面的判断,或者 while(...)里面的判断。当然
必要时赋值和输出也是可以的。
3、if (isPrime(a))的意思是如果 isPrime(a)的返回值为真,则进入 if 分支。

 Important:

【例 8】利用上一个例子中判定质数的函数,输入一个正整数 m,输出 2 到 m 之间(包含
2 和 m)所有质数之和。
#include<iostream>
#include<cmath>
using namespace std;
bool isPrime(int n)
{
if (n < 2)
{
return false;
}
for (int i = 2; i <= sqrt(n); i++)
{
if (n % i == 0)
{
return false;
}
}
return true;
}
int main()
{
int m, sum = 0;
cin >> m;
for (int i = 2; i <= m; i++)
{
if (isPrime(i))
{
sum += i;
}
}
cout << sum;
return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值