c语言基础知识帮助理解(详解函数)

这篇具有很好参考价值的文章主要介绍了c语言基础知识帮助理解(详解函数)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1. 函数是什么

2. 库函数 

3. 自定义函数 

4. 函数参数 

4.1实际参数(实参) 

4.2形式参数(形参) 

5.函数的调用

5.1传值调用

5.2传址调用 (传递地址)

6. 函数的嵌套调用和链式访问 

6.1 嵌套调用 

6.2 链式访问 

7. 函数的声明和定义 

7.1 函数声明

 7.2函数定义


1. 函数是什么

函数是一段可以执行特定任务的代码块。它可以接受输入参数并返回一个值。函数使得代码可以被模块化,重复使用,并提高代码的可读性和可维护性 


2. 库函数 

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

库函数是由编译器或操作系统提供的函数,用于执行常见的任务,如输入输出、字符串处理、数学计算等。库函数可以直接使用,不需要额外的编写和编译 

下面是一个使用库函数的示例代码,计算并打印正弦值:

#include <stdio.h>
#include <math.h>

int main() {
    double angle = 30;
    double sinValue = sin(angle);
    printf("Sin value of %lf degrees: %lf\n", angle, sinValue);
    
    return 0;
}

其中各种库函数及其对应的头文件可以去cplusplus.com  查看,接下来我给出一个实例:

 c语言基础知识帮助理解(详解函数),c语言,开发语言,算法,学习,笔记

 同时也能帮助到各位理解上面的代码,c语言中库函数亦不少,本文便不进行大量阐述。日后我会再写文章来详细讲解。


3. 自定义函数 

自定义函数: 自定义函数是由程序员根据需求自行编写的函数。它们可以完成特定的任务,并可以通过函数名调用执行。自定义函数在代码中经常被使用,可以提高代码的模块化和可重用性。

c语言基础知识帮助理解(详解函数),c语言,开发语言,算法,学习,笔记

  • ret_type是返回值的类型
  • fun_name是自定义函数名
  • para1是函数的形式参数

下面是一个自定义函数的示例代码,用于计算两个整数的和:

#include <stdio.h>

// 自定义函数,用于计算两个整数的和
int add(int a, int b) {
    return a + b;
}

int main() {
    int x = 5;
    int y = 10;
    
    int sum = add(x, y);
    printf("Sum: %d\n", sum);
    
    return 0;
}

4. 函数参数 

4.1实际参数(实参) 

函数的实际参数是在函数调用时传递给函数的值。实际参数可以是常量、变量、表达式或其他函数的返回值。实际参数的值被传递给函数的形式参数,从而在函数内部使用。实际参数的值可以影响函数的行为和结果。 

4.2形式参数(形参) 

形式参数是在函数定义中声明的变量,用于接收函数调用时传递的实际参数的值。形式参数在函数定义中起到占位符的作用,它们的值在函数调用时由实际参数提供。形式参数只在函数内部可见,其作用域仅限于函数内部。 

下面用代码事例来进一步阐述: 

#include <stdio.h>

// 函数定义,使用形式参数
void printSum(int a, int b) {
    int sum = a + b;
    printf("Sum: %d\n", sum);
}

int main() {
    int x = 5;
    int y = 10;
    
    // 函数调用,使用实际参数
    printSum(x, y);
    
    return 0;
}

在上述示例代码中,我们定义了一个名为printSum()的函数,它接受两个形式参数ab。在main()函数中,我们声明了两个整数变量xy,并将它们作为实际参数传递给printSum()函数。在printSum()函数内部,形式参数ab接收到相应的值,并计算它们的和。最后,在函数中打印出结果 

需要注意的是:形参实例化之后其实相当于实参的一份临时拷贝,想要改变参数的值,单单传值操作是不行的哦,我们要进行传址操作(后面讲)


5.函数的调用

5.1传值调用

传值调用是指在函数调用时,将实际参数的值复制给形式参数,二者的地址是不同的,即函数的形参和实参分别占有不同内存块,对形参的修改不会影响实参 

5.2传址调用 (传递地址)

  • 传址调用是把函数外部创建变量的内存地址传递给函数参数的一种调用函数的方式。
  • 这种传参方式可以让函数和函数外边的变量建立起真正的联系,也就是函数内部可以直接操 作函数外部的变量

接下来用一段代码来详细说明:

void changeValue(int *ptr) {
    *ptr = 10;
    printf("Inside function: %d\n", *ptr);
}

int main() {
    int x = 5;
    printf("Before function call: %d\n", x);
    
    changeValue(&x);
    
    printf("After function call: %d\n", x);
    
    return 0;
}

 此为传地址调用:可以清楚地发现,x的值被改变了

c语言基础知识帮助理解(详解函数),c语言,开发语言,算法,学习,笔记

------------------------------------------------------------------------------------------------------------------------------- 

传值 

void changeValue(int ptr) {
    ptr = 10;
    printf("Inside function: %d\n", ptr);
}

int main() {
    int x = 5;
    printf("Before function call: %d\n", x);

    changeValue(x);

    printf("After function call: %d\n", x);

    return 0;
}

而传值调用发现:根本改变不了,再结合之前的说明相信各位更加能理解清楚了

c语言基础知识帮助理解(详解函数),c语言,开发语言,算法,学习,笔记


6. 函数的嵌套调用和链式访问 

6.1 嵌套调用 

函数的嵌套调用是指在一个函数内部调用另一个函数。这种调用方式可以实现函数的层层嵌套,每个函数负责不同的功能,使代码结构更加清晰和模块化。通过函数的嵌套调用,可以将复杂的问题分解成更小的子问题,并通过调用不同的函数来解决这些子问题 

int multiply(int a, int b) {
    return a * b;
}

int add(int a, int b) {
    return a + b;
}

int main() {
    int x = 5;
    int y = 3;
    
    int result = multiply(add(x, y), y);
    
    printf("Result: %d\n", result);
    
    return 0;
}

定义了两个函数multiply()add(),分别用于实现乘法和加法运算。在main()函数中,我们声明了两个整数变量xy,并将它们作为实际参数传递给add()函数。add()函数返回x + y的结果,然后将这个结果作为实际参数传递给multiply()函数。最后,multiply()函数返回result * y的结果,这个结果被赋值给变量result 

6.2 链式访问 

把一个函数的返回值作为另外一个函数的参数 

printf("%d", printf("%d", printf("%d", 43)));
  • c语言基础知识帮助理解(详解函数),c语言,开发语言,算法,学习,笔记 第一个printf打印32,返回值是2
  • 所以第二个printf打印2,返回值是1
  • 第三个printf答应1

7. 函数的声明和定义 

7.1 函数声明

函数的声明是指在使用函数之前事先告诉编译器函数的名称、返回类型和参数列表 。函数的声明一般出现在函数的使用之前。要满足先声明后使用

 7.2函数定义

函数的定义是指函数的具体实现,交待函数的功能实现
// 声明函数
int add(int a, int b);

// 定义函数
int add(int a, int b) {
    return a + b;
}

int main() {
    int x = 5;
    int y = 3;
    
    int result = add(x, y);
    
    printf("Result: %d\n", result);
    
    return 0;
}

声明了一个函数add(),告诉编译器函数的名称、返回类型和参数列表。然后,在源文件中定义了这个函数,提供了具体的实现代码。在main()函数中,我们调用了add()函数,传递了两个实际参数xy,并将返回值赋值给变量result。最终,在main()函数中打印出result的值 

函数的声明和定义可以分开进行,也可以合并在一起。如果函数的声明和定义在同一个源文件中,函数处于前方,可以省略函数的声明,直接定义函数即可。如果函数的声明和定义分开在不同的源文件中,需要在使用函数之前先进行函数的声明 。


这次先到这里的,下次会进行函数递归和数组的详细讲解的。谢谢大家!!! 文章来源地址https://www.toymoban.com/news/detail-623066.html

到了这里,关于c语言基础知识帮助理解(详解函数)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • C语言基础知识:函数中的参数与返回值

    目录 1.形式参数和实际参数 1.1形式参数 1.2实际参数 2.变量作为函数参数 3.数组作为函数参数 3.1数组元素作为函数参数 3.2一维数组名作为函数参数 3.3数组指针,即数组元素的地址作为函数参数 4.函数返回值 形参出现在被调函数当中,在整个函数体内都可以使用。形参在定义

    2024年02月04日
    浏览(52)
  • 音视频基础知识——素材理解

    素材是媒体内容生产中一切生产资料的集合,包括不限于视频、音频、图片、字幕等形式。 素材通过统一的协议把原始的数据有序组织起来,便于编辑与管理。比如一般的素材是由一个物理文件及其各类属性构成,在对素材进行剪辑处理时,不用改变源文件中的任何内容,通

    2024年02月01日
    浏览(56)
  • 理解FPGA的基础知识——逻辑电路

    FPGA (Field Programmable Gate Aray,现场可编程门阵列)是一种可通过重新编程来实现用户所需逻辑电路的半导体器件。为了便于大家理解FPGA的设计和结构,我们先来简要介绍一些逻辑电路的基础知识。 1.逻辑代数     逻辑代数中的变量称为逻辑变量,用大写字母表示。逻辑变量的取

    2024年02月09日
    浏览(43)
  • 深入理解机器学习——关联规则挖掘:基础知识

    分类目录:《深入理解机器学习》总目录 许多商业企业在日复一日的运营中积聚了大量的数据。例如,食品商店的收银台每天都收集大量的顾客购物数据。下图给出一个这种数据的例子,通常称作购物篮事务(Market Basket Transaction)。表中每一行对应一个事务,包含一个唯一

    2024年02月10日
    浏览(44)
  • 深入理解 HTTP Authorization 头:基础知识

    在当今的互联网世界中,安全性贯穿于 web 应用的每个方面,HTTP Authorization 头的使用在这个过程中扮演着不可或缺的角色。它是 HTTP 请求中的一个重要部分,用来在客户端和服务器之间安全地传输认证信息。用途广泛,无论是浏览器还是其他客户端应用,都依赖它来验证用户

    2024年04月15日
    浏览(43)
  • 音视频基础知识-时间戳的理解

    问题背景: 凡是和流媒体和音视频打交道,时间戳基本是一个必须深刻理解的概念。你会在各种各样的传输协议和封装格式中看到这个东西,而且表现形式还不一样。其次这个概念会涉及到音视频播放的同步问题,也会影响音视频播放的控制问题。前者说的是音画同步,后者

    2023年04月08日
    浏览(47)
  • 深入理解 C++ 语法:从基础知识到高级应用

    让我们将以下代码分解以更好地理解它: 示例 示例解释 第 1 行: #include iostream 是一个头文件库,它让我们可以使用输入和输出对象,比如 cout (在第 5 行使用)。头文件为 C++ 程序添加功能。 第 2 行: using namespace std 表示我们可以使用标准库中的对象和变量名称。 如果你

    2024年03月23日
    浏览(49)
  • MOS管基础知识:轻松理解MOS管工作原理

    MOS管 是一种利用电场效应来控制其电流大小的半导体三端器件,很多特性和应用方向都与三极管类似。这种器件不仅体积小、质量轻、耗电省、寿命长、而且还具有输入阻抗高、噪声低、热稳定性好、抗辐射能力强等优点,应用广泛,特别是在大规模的集成电路中。 根据导

    2024年02月08日
    浏览(42)
  • 区块链基础知识——哈希函数

    哈希函数是一种数学函数,可根据输入的内容输出其对应的哈希值。散列函数的输入具有任意长度,但输出始终具有固定的长度。 散列算法的核心是一个数学函数,该散列函数构成散列算法的一部分,根据输入的数据块进行运算,得到的结果作为散列值。散列算法涉及多轮散

    2024年02月11日
    浏览(53)
  • C++ 从零基础到入门(3)—— 函数基础知识

    目录 一、函数简介 1、函数的作用和目的 2、函数的基本概念 二、函数定义与声明 1、函数定义的语法和结构 2、函数原型 三、参数传递 1、值传递 2、引用传递 3、指针传递 4、参数传递的选择 5.引用传递与指针传递的区别 四、返回值 1、返回类型 2、返回语句 在 C++ 中,函数

    2024年01月21日
    浏览(50)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包