30-函数(上)

30-1 函数是什么

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

一般会有输入参数并有返回值,提供对过程的封装和细节的隐藏。这些代码通常被集成为软件库。

30-2 函数的分类

1、库函数

https://cplusplus.com/reference/

C语言自带的函数。

简单总结,C语言常用的库函数:IO函数、字符串操作函数、字符操作函数、内存操作函数、时间/日期函数、数学函数、其他库函数

2、自定义函数

如果库函数能干所有的事情,那还要程序员干什么?所有更加重要的是自定义函数。
自定义函数和库函数一样。有函数名,返回值类型和函数参数
但是不一样的是这些都是我们自己来设计,这给程序员一个很大的发挥空间。

30-3 库函数

1、strcpy

https://cplusplus.com/reference/cstring/strcpy/

通过代码进行理解:

int main()
{
	char arr1[20] = { 0 };
	char arr2[20] = "Hello World";
	strcpy(arr1, arr2);
	printf("%s\n",arr1);
	return 0;
}

运行结果:

2、memset

https://cplusplus.com/reference/cstring/memset/ 

代码1: 

int main()
{
	char arr[20] = "Hello World";
	memset(arr, 'x', 5);
	printf("%s\n", arr);
	return 0;
}

运行结果: 

 代码2:

int main()
{
	char arr[20] = "Hello World";
	memset(arr+6, 'y', 3);
	printf("%s\n", arr);
	return 0;
}

运行结果:

本次只是初次了解,学会如何通过阅读文档进行学习,后期会详细讲解。

使用库函数时,一定要记得加相应的头文件!!! 

参考文献:

MSDN(Microsoft Developer Network)
www.cplusplus.com
http://en.cppreference.com(英文版)
http://zh.cppreference.com(中文版)

30-4 自定义函数

 函数的组成

ret_type fun_name(para1,*)
{
    statement;  //语句项
}

ret_type 返回类型
fun_name 函数名
para1    函数参数

例1:写一个函数,找出两个整数中的最大值

//函数的定义
int get_max(int x, int y)
{
	return(x > y ? x : y);
}
int main()
{
	int a = 0;
	int b = 0;
	scanf("%d %d", &a, &b);
    //函数的调用
	int r = get_max(a, b);
	printf("max=%d\n", r);
	return 0;
}

 运行结果:

 图解: 

例2:写一个函数可以交换两个整形变量的内容

代码如下:

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;
}

前后竟然没有变化!

原因:

调试一下看看吧

前后对比发现:

x与y的值进行了交换,但是a与b的值仍然没有改变;x与y只是接收了a与b的值,并没有接收地址

结论:

当实参传递给形参的时候,形参是实参的一份临时拷贝;对形参的修改不会影响实参

修改:

//写一个函数可以交换两个整形变量的内容
//x,y为形参
void swap(int* x, int* y)
{
	int z = 0;  
	z = *x;  //z=a
	*x =*y;  //a=b
	*y = z;  //b=z
}
int main()
{
	//a,b为实参
	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;
}

 运行结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值