深入浅出C语言—【函数】上

这篇具有很好参考价值的文章主要介绍了深入浅出C语言—【函数】上。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

深入浅出C语言—【函数】上

  目录

1.函数的概念

2.C语言函数的分类

2.1 库函数

2.1.1 strcpy库函数举例学习方式

2.1.2 库函数扩展知识

2.2 自定义函数

2.2.1求两个整数中的较大值

3. 函数的参数

3.1 实际参数(实参)

3.2 形式参数(形参)

4. 函数的调用

4.1 传值调用

4.2 传址调用


老铁们,网址自取,记得一键三连啊,禁止白嫖!!!

AI知识科普

https://texttools.cn/

1.函数的概念

数学中我们常见到函数的概念。但是你了解C语言中的函数吗?

维基百科中对函数的定义:子程序

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

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



2.C语言函数的分类

1. 库函数

2. 自定义函数 

2.1 库函数

为什么会有库函数?

解释如下:

1. 我们知道在我们学习C语言编程的时候,总是在一个代码编写完成之后迫不及待的想知道结果,想把这个结果打印到我们的屏幕上看看。这个时候我们会频繁的使用一个功能:将信息按照一定的格 式打印到屏幕上(printf)。

2. 在编程的过程中我们会频繁的做一些字符串的拷贝工作(strcpy)。

3. 在编程是我们也计算,总是会计算n的k次方这样的运算(pow)。

像上面我们描述的基础功能,它们不是业务性的代码。我们在开发的过程中每个程序员都可能用的到,为了支持可移植性和提高程序的效率,所以C语言的基础库中提供了一系列类似的库函数,方便程序员进行软件开发。


那怎么学习库函数呢?

推荐以下几个学习库函数的网站

深入浅出C语言—【函数】上

以网站方式举例

深入浅出C语言—【函数】上


2.1.1 strcpy库函数举例学习方式

上网页

深入浅出C语言—【函数】上

 代码实现strcpy库函数功能

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <string.h>

int main()
{
	char arr1[] = "hello world";//源头
	char arr2[20] = "xxxxxxxxxxxxxxx";//目的地
	//对于数组,数组名其实是数组第一个元素的地址,也就是起始地址
	strcpy(arr2, arr1);
	printf("%s\n", arr2);

	return 0;
}

代码结果

深入浅出C语言—【函数】上


  简单总结,C语言常用的库函数都有

IO函数

字符串操作函数

字符操作函数

内存操作函数

时间/日期函数

数学函数

其他库函数


2.1.2 库函数扩展知识

C语言中把常用的功能,进行了封装,封装成一个个的函数,提供出来大家都可以使用。


注意:C语言并不是直接实现库函数,而是提供了C语言的标准和库函数的约定

比如> scanf库函数    C语言规定库函数的功能、名字、参数、返回值等,并不会实现库函数。


库函数的实现一般是由编辑器去实现的

如:

VS2022 编辑器

gcc 编辑器

因为C语言只提供了库函数的规定,所以在不同的编辑器去实现库函数时的方式(或者说代码的逻辑)有时候就会不太一样,但是暴露出来给程序员用的库函数使用起来都一样。


2.2 自定义函数

如果库函数能干所有的事情,那还要程序员干什么?

其实和库函数相比,自定义函数更加重要。

自定义函数和库函数一样,有函数名,返回值类型和函数参数。 但是不一样的是这些都是我们自己来设计。这给程序员一个很大的发挥空间。


2.2.1求两个整数中的较大值

版本一(不使用函数)

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>

int main()
{
	int a = 0;
	int b = 0;
	//输入
	scanf("%d %d", &a, &b);
	//计算
	int m = (a > b ? a : b);
	
	
	//输出
	printf("较大值是:%d\n", m);

	return 0;
}

结果

深入浅出C语言—【函数】上


版本二(使用自定义函数实现)

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>

  int get_max(int x, int y)
{
	int 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;
}

 结果

深入浅出C语言—【函数】上


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

错误版本

#define _CRT_SECURE_NO_WARNINGS 1
#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;
}

 错误结果

深入浅出C语言—【函数】上

上面的代码好像没有替我们实现交换两个整型变量的内容,哪里出问题了呢?


这时我们就要了解下函数的实际参数和形式参数

补充:主调函数中的参数时实参,被调函数中的参数时形参

当实参传递给形参的时候,这时的形参是实参的一份临时拷贝,形参的改变不影响实参(也就是不改变实参)

这里下面会讲解函数的传值调用和传值调用,来帮助初学者更好的理解


正确版本

void Swap(int* pa, int* pb)
{
	int tmp = *pa;//tmp = a
	*pa = *pb;//a = b
	*pb = tmp;//b = 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;
}

正确结果

深入浅出C语言—【函数】上



3. 函数的参数

3.1 实际参数(实参)

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

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

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

3.2 形式参数(形参)

形式参数是指函数名后括号中的变量,因为形式参数只有在函数被调用的过程中才实例(分配内存单元),所以叫形式参数。

形式参数当函数调用完成之后就自动销毁了。因此形式参数只在函数中有效。



4. 函数的调用

4.1 传值调用

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

4.2 传址调用

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

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



这篇是函数讲解的第一篇,后面还会出一篇,把函数内容讲解完,最近在忙期末复习了,更新速度慢了很多。

如果觉得文章不错,期待你的一键三连哦,你个鼓励是我创作的动力之源,让我们一起加油,顶峰相见!!!文章来源地址https://www.toymoban.com/news/detail-471394.html

到了这里,关于深入浅出C语言—【函数】上的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【C语言趣味教程】第一章:深入浅出 HelloWorld | 通过 HelloWorld 展开教学 | 头文件详解 | main 函数详解

      🔗 《C语言趣味教程》👈 猛戳订阅!!! 💭 写在前面: 这是一套 C 语言趣味教学专栏,目前正在火热连载中,欢迎猛戳订阅!本专栏保证篇篇精品,继续保持本人一贯的幽默式写作风格,当然,在有趣的同时也同样会保证文章的质量,旨在能够产出 \\\"有趣的干货\\\" !

    2024年02月12日
    浏览(32)
  • (已完结)深入浅出操作系统 - 目录

    ---- 整理自狄泰软件唐佐林老师课程 实验环境: OS Version: Ubuntu 10.10 QT Version: 4.7.4 QT Creator Version: 2.4.1 Bochs Version: 2.4.5 01 - 进阶操作系统(BIOS) 02 - Hello, DTOS!(第一个主引导程序,屏幕上打印Hello,DTOS! ) 03 - 调试环境的搭建(Bochs) 04-05 - 主引导程序的扩展 06-07-08 - 突破512字节

    2024年02月12日
    浏览(45)
  • CSDN首发 | 《深入浅出OCR系列》目录

    👨‍💻 作者简介: CSDN、阿里云人工智能领域博客专家,新星计划计算机视觉导师,百度飞桨PPDE,专注大数据与AI知识分享。✨ 公众号:GoAI的学习小屋 ,免费分享书籍、简历、导图等,更有交流群分享宝藏资料,关注公众号回复“加群”或➡️ 点击链接 加群。 🎉 专栏推

    2023年04月08日
    浏览(38)
  • 【C语言趣味教程】(1) 深入浅出 HelloWorld:梦开始的地方!通过 HelloWorld 展开教学 | 头文件详解 | main 函数详解

      🔗 《C语言趣味教程》👈 猛戳订阅!!! 💭 写在前面: 这是一套 C 语言趣味教学专栏,目前正在火热连载中,欢迎猛戳订阅!本专栏保证篇篇精品,继续保持本人一贯的幽默式写作风格,当然,在有趣的同时也同样会保证文章的质量,旨在能够产出 \\\"有趣的干货\\\" !

    2024年02月15日
    浏览(36)
  • 深入浅出 Spring:核心概念和基本用法详解

    个人主页:17_Kevin-CSDN博客 收录专栏;《Java》 在 Java 企业级应用开发中,Spring 框架已经成为了事实上的标准。它提供了一种轻量级的解决方案,使得开发者能够更轻松地构建灵活、可扩展的应用程序。在本文中,我们将探讨 Spring 框架的一些核心概念和基本用法,以此更好地

    2024年03月20日
    浏览(46)
  • 深入浅出PaddlePaddle函数——paddle.Tensor

    分类目录:《深入浅出PaddlePaddle函数》总目录 相关文章: · 深入浅出TensorFlow2函数——tf.Tensor · 深入浅出Pytorch函数——torch.Tensor · 深入浅出PaddlePaddle函数——paddle.Tensor · 深入浅出PaddlePaddle函数——paddle.to_tensor Tensor 是Paddle中最为基础的数据结构,有几种创建 Tensor 的不同

    2024年02月04日
    浏览(30)
  • 深入浅出PaddlePaddle函数——paddle.full

    分类目录:《深入浅出PaddlePaddle函数》总目录 相关文章: · 深入浅出PaddlePaddle函数——paddle.Tensor · 深入浅出PaddlePaddle函数——paddle.ones · 深入浅出PaddlePaddle函数——paddle.zeros · 深入浅出PaddlePaddle函数——paddle.full · 深入浅出PaddlePaddle函数——paddle.ones_like · 深入浅出Paddl

    2024年02月06日
    浏览(28)
  • 深入浅出Pytorch函数——torch.ones

    分类目录:《深入浅出Pytorch函数》总目录 相关文章: · 深入浅出Pytorch函数——torch.Tensor · 深入浅出Pytorch函数——torch.ones · 深入浅出Pytorch函数——torch.zeros · 深入浅出Pytorch函数——torch.full · 深入浅出Pytorch函数——torch.ones_like · 深入浅出Pytorch函数——torch.zeros_like · 深

    2023年04月26日
    浏览(89)
  • 深入浅出Pytorch函数——torch.full

    分类目录:《深入浅出Pytorch函数》总目录 相关文章: · 深入浅出Pytorch函数——torch.Tensor · 深入浅出Pytorch函数——torch.ones · 深入浅出Pytorch函数——torch.zeros · 深入浅出Pytorch函数——torch.full · 深入浅出Pytorch函数——torch.ones_like · 深入浅出Pytorch函数——torch.zeros_like · 深

    2024年02月07日
    浏览(40)
  • 深入浅出Pytorch函数——torch.arange

    分类目录:《深入浅出Pytorch函数》总目录 相关文章: · 深入浅出TensorFlow2函数——tf.range · 深入浅出Pytorch函数——torch.arange · 深入浅出PaddlePaddle函数——paddle.arange 语法 当 dtype 表示浮点类型时,为了避免浮点计算误差,建议给 end 加上一个极小值 epsilon ,使边界可以更加明

    2024年02月04日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包