IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 认识一下C语言的函数 -> 正文阅读

[C++知识库]认识一下C语言的函数

C语言的函数的分类

库函数和自定义函数
库函数:大家参考 这个网站去学习 https://cplusplus.com/reference/
我这里主要说一下,自定义函数的去做
1.话不多说,我们直接看语法

ret_type fun_name(para1, * )
{
 statement;//语句项
}
ret_type 返回类型
fun_name 函数名
para1    函数参数

函数就由以上部分组成
2.我们来举一个简单的例子来看看函数的使用

/*
求俩个函数的最大值
*/
int max2(int a,int b){
if(a>b){
	return a;
}
else{
	return b;
}
}
#include<stdio.h>
int main(){
int a;
int b;
scnaf("%d %d",&a,&b);
int max=max2(a,b);
printf("%d\n",max2);
return 0;
}
//main方法自上1而下启动

这里附上一幅图:
在这里插入图片描述

下面我们进一步再来举个例子

/*
求三个证书最大值的变量
*/
#include<stdio.h>
int Max(int a, int b, int c) {
	int max = a;
	if (b > max) {
		max = b;
	}
	if (c > max) {
		max = c;
	}
	return max;

}

int main() {
	int a;
	int b;
	int c;
	printf("请输入三个整数\n");
	scanf("%d %d %d", &a, &b, &c);
	int max3 = Max(a, b, c);
	printf("%d\n", max3);
	return 0;
}

熟悉了吧,我们再来一个例子过过火

/*
计算俩个整数的平方差
*/
//返回某个数的平方
int sqr(int x){
	return x*x;
}
//返回x和y的差值
int diff(int a,int b){
if(a>b){
	return a-b;
}
else{
	return b-a;
}
}
#include<stdio.h>
int main(){
int x,y;
printf("请输入俩个整数\n");
scanf("%d",&x,&y);
int z=diff(sqr(x),sqr(y));
return 0;
}

3.另外我们通过上面的例子差不多清楚了函数的定义和调用,我们来讨论一下函数传参的问题
还是通过一个例子来说

//写一个函数来交换俩个整形的变量
#include <stdio.h>
//实现成函数,但是不能完成任务
void Swap1(int x, int y)
{
 int tmp = 0;
 tmp = x;
 x = y;
 y = tmp;
}

//swap1的方法无效。
//你们可以试着运行一下
//正确的版本
void Swap2(int *px, int *py)
{
 int tmp = 0;
 tmp = *px;
 *px = *py;
 *py = tmp;
}
int main(){

 int num1 = 1;
 int num2 = 2;
 Swap1(num1, num2);
 printf("Swap1::num1 = %d num2 = %d\n", num1, num2);
 Swap2(&num1, &num2);
 printf("Swap2::num1 = %d num2 = %d\n", num1, num2);
return 0;
}

上面的例子看不懂没有关系,我这里由俩个概念性的定义,大家看一下
实际参数(实参)
真实传给函数的参数,叫实参。
实参可以是:常量、变量、表达式、函数等。
无论实参是何种类型的量,在进行函数调用时,它们都必须有确定的值,以便把这些值传送给形
参。
形式参数(形参):
形式参数是指函数名后括号中的变量,因为形式参数只有在函数被调用的过程中才实例化(分配内
存单
元),所以叫形式参数。形式参数当函数调用完成之后就自动销毁了。因此形式参数只在函数中有效。

上面 Swap1 和 Swap2 函数中的参数 x,y,px,py 都是形式参数。在main函数中传给 Swap1 的 num1 ,但实际上,形式参数相当于实际参数的一个临时拷贝。num1和num2的在程序运行的时候,会在内存空间中生成一份临时变量

给 Swap2 函数的 &num1 , &num2 是实际参数。
4.函数的调用
函数的调用分为传值调用和传参调用
a.传值调用
函数的形参和实参分别占有不同内存块,对形参的修改不会影响实参。
b.传址调用
传址调用是把函数外部创建变量的内存地址传递给函数参数的一种调用函数的方式。
这种传参方式可以让函数和函数外边的变量建立起真正的联系,也就是函数内部可以直接操
作函数外部的变量。

接下来我们还是看例子

//值传递。
//计算n  的幂
#include<stdio.h>
double power(double x,int n)
{
	int i=0;
	double tmp=1.0;
	for(i=0;i<=n;i++){
		tmp*=x;
	return tmp;
}
}
int main(){
double a;
int b;
printf("求a的b次幂\n");
scnaf("%lf",&a);
scnaf("%d",&b);
double c=power(a,b)
return 0;
}
/*
形参x被赋上实参a的值,形参n被赋上实参b的值,想通过值来进行参数传递的机制为值传递。
*/

我举个简单的例子说法,这相当于我们复印一本书,在复印版的书上写写画画,不会对原来的那本造成任何影响。

//传值调用
//交换俩个整数
void change( int *x,int *y) {
	int z = 0;
	z = *x;
	*x = *y;
	*y = z;



}
int main() {
	int a = 6;
	int b = 7;
	printf("交换前数字是a=%d和b=%d\n", a, b);
	change(&a,&b);
	printf("交换前数字是a=%d和b=%d\n", a, b);

	return 0;
	//这里就是典型的传址调用,改变了原来的变量。

函数的问题就搁置在这。具体讲解请听下回分解。

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-08-06 10:25:04  更:2022-08-06 10:28:32 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 12:55:25-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码