C语言函数(1)


前言

这里是对函数的一些总结。

一、函数是什么?

在数学中,函数是这样表示的:f(x)=2*x+3;
百度百科中关于函数是这样定义的:
在计算机中,函数是大型程序中的部分代码,由一个或多个语句块组成。完成某项特定任务,但相较于其他代码又有相对独立性。
一般输入函数都有返回值,提供对过程的封装和细节的移仓,这些代码被称为软件库。
C语言中的函数分为 - 库函数(本身就提供的)和自定义函数(自己创造的)

二、库函数

早期C没有库函数,因为使用的频率很大,为提高开发效率,减少代码冗余,使代码标准化。然后就想到把常用的功能实现成函数,集成为库,由C语言直接提供。

类似printf、scanf、strlen…都属于库函数。
在www.cpluscplus.com这个网站上可以查到库函数都有什么,分别实现什么功能。
库函数使函数标准化,对于输入,返回的数据类型都有了统一的规定。
用一个库函数来举例子,使我们更熟悉函数:
在这里插入图片描述
用一段代码来熟悉的功能:

#include<stdio.h>
#include<string.h>
int main()
{
       char arr1[] = "abcdef";
       char arr2[20] = { 0 };
       strcpy(arr2, arr1);
       printf("%s\n", arr2);
       return 0;
}

在这里插入图片描述
程序运行发现arr1中的字符串abcdef已经被复制到arr2中。
再举一个例子:

#include<stdio.h>
#include<string.h>

int main()
{
	char arr1[] = "abcdef";
	char arr2[20] = "xxxxxxxxxxxx";

	strcpy(arr2, arr1);
	printf("%s\n", arr2);
	return 0;
}

运行程序:
在这里插入图片描述
那为什么是这样呢,打开调试:
在这里插入图片描述
由此我们可以得出结论:strcpy是连同字符串后面的结束标志—‘\0’一同进行复制的。
我们想要用一个库函数,可以多去网站上学习。同时,调试着实是一个快速了解程序运行逻辑的工具。
我们再看一个库函数:memset
在这里插入图片描述

代码:

#include<stdio.h>

int main()
{
	char arr[] = "happy new year";
	memset(arr, 'X', 3);
	printf("%s\n", arr);
	return 0;
}

运行程序:
在这里插入图片描述
数组名代表首元素地址,观察到从第一个字符开始都被改成了字符‘X’,且一共改了3个。

三、自定义函数

如果库函数能实现所有的功能的话,那要程序员做什么。
自定义函数的规格大概是这样的:

ret_type fun_name(para1,*)
{    
    statement    //函数体
}

函数的:输入参数和返回值——————类似于工厂:原材料和产品
举个栗子:
写一个函数求两个函数的最大值:

int max(int x, int y)
{
	return (x > y) ? x : y;
}

日后,根据我们所遇到实际问题的复杂性,我们可以设计出各种类型的函数。

四、函数参数

写一段代码:

#include<stdio.h>
//交换两个数的值

void swap(int x, int y)
{
	int tmp = x;
	x = y;
	y = tmp;
}

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

运行代码:
在这里插入图片描述
发现并没有得到我们想要实现的结果,这是为什么呢?
打开调试:
在这里插入图片描述
我们发现,其实在swap函数内部,x和y的值已经交换了
其实,main函数中a和b的值没有发生交换的原因是:在传值调用的时候,函数内部的形参其实只是实参的一份临时拷贝。当函数执行完之后。这片内存其实会被释放,所有这里a和b的值才没有发生交换。
如果想要交换a和b的值,需要传a和b的地址。这里在我的C语言基础概括中有所阐述https://blog.csdn.net/WangLongxyd/article/details/122477337?spm=1001.2014.3001.5501
有兴趣的可以去看看。


总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值