作业介绍

C3.02 参数传递与作用域

课堂内容:参数传递与作用域


  • 参数传递

    • 值传递

#include<bits/stdc++.h>
using namespace std;
// 函数功能:交换两个变量的的值
void Swap(int a, int b) {
	int t = a;
	a = b;
	b = t;
	cout << a <<" "<< b << endl;
	return;
}
int main() {
	int x, y;
	cin >> x >> y;
	Swap(x,y); //调用函数,传递 x 和 y 的值
	cout << x <<" "<< y << endl;
	return 0;
}

传值过程中实际上是复制 x 的值至形参 a,复制 y 的值至形参 b,在Swap函数内部只是让 a 与 b 的值互换,而并未使得主函数的 x 和 y 交换。

传值过程中修改形参的值并不影响实参的情况!


  • 传引用

#include<bits/stdc++.h>
using namespace std;
// 函数功能:交换两个变量的的值
void Swap(int &a, int &b) {
	int t = a;
	a = b;
	b = t;
	cout << a <<" "<< b << endl;
	return;
}
int main() {
	int x, y;
	cin >> x >> y;
	Swap(x,y); //调用函数,传递 x 和 y 的值
	cout << x <<" "<< y << endl;
	return 0;
}

在数据类型和变量名称间添加&后,使得该变量成为引用变量。引用并不是一个独立定义的变量或其他值,而是一个对已存在的变量或其他值取了一个别名。这一期间编译器不会开辟新的空间,它与其引用对象共同使用同一块空间,对别名进行操作会影响引用对象。

传引用中修改形参的值会影响实参的情况!


  • 传地址

#include<bits/stdc++.h>
using namespace std;
// 函数功能:交换两个变量的的值
void Swap(int *a, int *b) {
	int t = *a;
	*a = *b;
	*b = t;
	cout << *a <<" "<< *b << endl;
	return;
}
int main() {
	int x, y;
	cin >> x >> y;
	Swap(&x, &y); //调用函数,传递 x 和 y 的值
	cout << x <<" "<< y << endl;
	return 0;
}

调用函数时把主函数中实参的地址传递给函数的形参,直接对实参地址所指向的内存空间进行操作。

传地址过程中修改形参地址的值发生变化会影响实参的结果!


  • 变量作用域

    • 全局变量

定义在函数外部的变量称为全局变量,从定义变量的位置开始到程序结束始终有效,可以为程序中所有函数共用(若在定义时若没有赋初值,其默认值为0)。

  • 局部变量

定义在函数内的变量叫做局部变量。局部变量的存储空间是临时分配的,当函数执行完毕后,局部变量的空间就被释放。不同函数的局部变量相互独立,不能访问其他函数的局部变量。

  • 使用原则

遵循 “就近原则”。

#include <bits/stdc++.h>
using namespace std;
int x = 10;
void test() {
	int x = 20;
	cout << x << " ";
	return ;
}
int main() {
	x = 30;
	cout << x << " ";
	test();
	cout << x << " ";
	return 0;
}

输出结果为30 20 30


  • 常用数学函数

<cmath>头文件中包含了很多数学函数,使用时应包含相关头文件:#include <cmath>


abs(x):求 x 的绝对值。

实例:

float a = -3.14;

cout << abs(a); // 输出为3.14

pow(x, y):求 x 的 y 次幂。

实例:

int a = 10, b = 2;

cout << pow(a,b); // 输出为 100

sqrt(x):求 x 的平方根。

实例:

int a = 100;

cout << sqrt(a); // 输出为 10

ceil(x):求不小于 x 的最小整数(向上取整)。

实例:

float a = 3.14, b = 5.0;

cout << ceil(a) <<" "<< ceil(b); // 输出为 4 5

floor(x):求不大于 x 的最大整数(向下取整) 。

实例:

float a = 3.14, b = 5.0;

cout << floor(a) <<" "<< floor(b); // 输出为 3 5

round(x):将 x 四舍五入到最接近的整数。

实例:

float a = 3.4, b = 5.5;

cout << round(a) <<" "<< round(b); // 输出为 3 6

需要注意的是,这些函数在进行计算时都需要将参数转换为正确的数据类型,否则可能会出现不正确的结果。此外,对于大多数函数,它们的返回值都是浮点数类型(double)。


  • 常用其他函数

使用时应包含相关头文件:#include <algorithm>


swap(x, y) :交换 x 与 y 的值,不论它们是什么数据类型。

实例:

int a = 10, b = 20;

swap(a,b);

cout<< a <<" "<< b; // 输出为 20 10

max(x, y):比较 x 与 y 的值,返回较大的那个。

实例:

int a = 10, b = 20;

cout<< max(a,b); // 输出为 20

min(x, y):比较 x 与 y 的值,返回较小的那个。

实例:

int a = 10, b = 20;

cout<< min(a,b); // 输出为 10

题目

认领作业后才可以查看作业内容。
状态
正在进行…
题目
4
开始时间
2024-1-1 0:00
截止时间
2099-12-31 23:59
可延期
24 小时