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语言中的函数

1.函数是什么?

函数即子程序

子程序,是一个大型程序中的某部份代码,由一个或多个语句块组成。它负责完成某项特定任务,而且相较于其他代码,具备相对的独立性。

2.C语言中函数的分类:

1.库函数

2.自定义函数

2.1函数的组成:

2.2 例:

求两个数的较大值

int get_max(int x, int y)
{
	int z = 0;
	z = (x > y ? x : y);
	return z;
}
int main()
{
	int a = 0;
	int b = 0;
	scanf("%d %d", &a, &b);
	int m = get_max(a, b);
	printf("%d\n", m);
	return 0;
}

2.3 错误示例:

交换两个整型变量的内容。

void Swap(int x, int y)
{
	int z = 0;
	z = x;
	x = y;
	y = z;
}
int main()
{
	int a = 0;
	int b = 0;
	scanf("%d %d", &a, &b);
	printf("交换前:a = %d  b = %d\n", a, b);
	Swap(a, b);
	printf("交换后:a = %d  b = %d\n", a, b);
	return 0;
}

//错误原因:当函数调用的时候,实参传给形参,形参其实是实参的一份临时拷贝,所以对形参的修改,不会影响实参。

修改后:

使用指针

void Swap(int* pa, int* pb)
{
	int z = 0;
	z = *pa;
	*pa = *pb;
	*pb = z;
}
int main()
{
	int a = 0;
	int b = 0;
	scanf("%d %d", &a, &b);
	printf("交换前:a = %d  b = %d\n", a, b);
	Swap(&a, &b);
	printf("交换后:a = %d  b = %d", a, b);
	return 0;
}

3.函数的参数

3.1实际参数(实参):

真实传给函数的参数,叫实参。

实参可以是:常量、变量、表达式、函数等。

无论实参是何种类型的量,在进行函数调用时,他们都必须有确定的值,以便把这些值传送给形参。

3.2形式参数(形参)

形式参数是指函数名后括号中的变量,因为形式参数只有在函数被调用的过程中才实例化(分配内存单元),所以叫形式参数。形式参数当函数被调用完成之后就自动销毁了。因此形式参数只有在函数中有效。

4.函数的调用

4.1传值调用

函数的形参和实参分别占有不同内存块,对形参的修改不会影响实参。

4.2传址调用

·传址调用是把函数外部创建变量的内存地址传递给函数参数的一种调用函数的方式。

·这种传参方式可以让函数和函数外边的变量建立起真正的联系,也就是函数内部可以直接操作函数外部的变量。

4.3练习

写一个函数可以判断一个数是不是素数

(打印100-200之间的素数)

int is_prime(int n)
{
	int j = 0;
	for(j = 2;j < n;j++)
	{
		if (n % j == 0)
		return 0;
	}
	return 1;
}
int main()
{
	int i = 0;
	for(i = 100;i <= 200;i++)
	{
		if (is_prime(i) == 1)
			printf("%d ", i);
	}
	return 0;
}

写一个函数判断一年是不是闰年

int is_leap_year(int n)
{
	if (n % 4 == 0 && n % 100 != 0 || n % 400 == 0)
	{
		return 1;
	}
	else 
		return 0; 
}

int main()
{
	int y = 0;
	for (y = 1000;y <= 2000;y++)
	{
		if (is_leap_year(y) == 1)
			printf("%d ", y);
	}
	return 0;
}

写一个函数,实现一个整型有序数组的二分查找

int binary_search(int arr[], int k, int sz)
{
	int left = 0;
	int right = sz - 1;
	while (left <= right)
	{
		int mid = (left + right) / 2;
		if (k < arr[mid])
		{
			right = mid - 1;
		}
		else if (k > arr[mid])
		{
			left = mid + 1;
		}
		else
			return mid;
	}
	return -1;
}

int main()
{
	int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
	int k = 8;
	int sz = sizeof(arr) / sizeof(arr[0]);
	int ret = binary_search(arr, k, sz);
	if (ret == -1)
	{
		printf("找不到" );
	}
	else
	{
		printf("找到了,下标为%d", ret);
	}
	return 0;
}

写一个函数,每调用一次这个函数,就会将num的值增加1

void add(int* p)
{
	*p = *p + 1;
}

int main()
{
	int num = 0;
	add(&num);
	printf("%d\n", num);
	add(&num);
	printf("%d\n", num);
	add(&num);
	printf("%d\n", num);
	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-05-24 17:55:54  更:2022-05-24 17:58:40 
 
开发: 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年5日历 -2024/5/13 5:21:50-

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