我的编程空间,编程开发者的网络收藏夹
学习永远不晚

C语言深入了解函数

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

C语言深入了解函数

1. 函数的概念

函数是c语言的功能单位,实现一个功能可以封装一个函数来实现。

定义函数的时候一切以功能为目的,根据功能去定函数的参数和返回值。 函数就是将特定功能的代码封装在一个函数内部,当使用这些代码时,只需要调用函数即可。

2. 函数的分类

从定义角度分

  • 库函数(即函数是谁实现的)
  • 自定义函数
  • 系统调用(操作系统实现的函数)

从参数角度分类

有参函数:函数有一个或多个形参(参数类型随便)

int fun(int a ,float b,double c){ }

无参函数:函数没有参数,在形参列表的位置写void或什么都不写

int fun(void) { }或 int fun( ){ }

从返回值角度分

带返回值的函数:在定义函数的时候,必须带着返回值类型,在函数体里,必须有return,如果没有返回值类型,默认返回整型。

无返回值函数:函数名前加void,return可以写也可以不写,写的时候后面加一个分号即return;

3. 函数的定义

定义方法:

格式如下

返回值类型 函数名字(形参列表,用逗号分隔开) {

//函数体,函数的功能在函数体里实现

}

int max(int a,int b)
{
 int z;
 if (x>y){
	z = x;
	}
 else{
	z = y;
	}
 return z;
}

注意:函数名字是标识符,所以要满足标识符的命名规则

return 后面跟的变量类型必须与函数名左边的类型一致

在一个程序中,相同的函数名只能出现依次

#include<stdio.h>
// 定义一个没有参数也没有返回值的函数
void myfunc1(){
    printf("哇哦哇哦\n");
    return ;
}
//定义一个无返回值,有参数的函数
void myfunc2(int a,int b){
    int sum;
    sum = a + b;    
    printf("%d + %d = %d\n",a,b,sum);
}
//定义一个有返回值,有参数的函数
int myfunc3(int a,int b){
    int sum;
    sum = a + b;
    return sum;
}
int main(){
    // 调用函数myfunc1
    // 调用的时候不用加返回值类型
    myfunc1();
    return 0;
}

4. 函数的声明

概念:对已经定义的函数,进行说明,函数可以多次声明

为什么要进行声明? 有些情况下,如果不对函数进行声明,编译器在编译的时候,可能不认识这个函数,因为编译器在编译c程序的时候,是从上往下编译的。

  • 主调函数和被调函数在同一个.c文件中的时候:

(1)被调函数在上,主调函数在下,不需要声明,即下面的函数可以调用上面的函数

(2)被调函数在下,主调函数在上,需要声明。

对于一些高级的编译器,不用声明也能调用函数,但是会弹出很多warning。

声明的方式

1.直接声明法:将被调用的函数的定义拷贝过去,后面加分号,如下例:

#include<stdio.h>
void myfunc1();  // 直接声明
int main(){
    myfunc1();
    return 0;
}
void myfunc1(){
    printf("哇哦哇哦\n");
    return ;
}

2.间接声明:将函数的声明放在头文件中, .c程序包含头文件即可(例子待补充…)

  • 主调函数和被调函数在不同一个.c文件中的时候:

一定要声明!!!

声明的方式

1.直接声明:将被调用的函数的定义拷贝过去,后面加分号,前面加 extern

2.间接声明:将函数的声明放在头文件中, .c程序包含头文件即可

5. 函数的调用

变量=函数名(实参列表); // 带返回值的

函数名(实参列表); // 不带返回值的

推荐阅读:《形参和实参的区别》

#include<stdio.h>
int sum(int a,int b){    // 定义带返回值的函数,定义的时候是形参
    int sum = a + b;
    return sum;
}
void func(){
    printf("我是无返回值函数!\n");
    printf("我是老六~\n");
    return; 
}
int main(){
    int re = sum(1,2);    // 调用带返回值的函数,调用的时候是实参,定义一个int类型的变量re来接收sum函数返回的结果
    printf("结果是:%d\n",re);
    func();   // 调用无返回值函数
    return 0;
}

6. 递归函数

自己调用自己的函数叫做递归函数

递归函数调用会在计算机里同时存在多个,其中最后一个是当前正在工作的那个。

一个非常复杂的问题,如果可以拆分成多个小问题,其中至少有一个小问题和原来的问题本质上一样,只是规模小一些,就可以采用递归来解决。

编写原则

首先要在递归函数中编写语句描述问题的拆分方式

在递归函数的开始编写分支解决不再拆分的情况(这种情况必须保证程序可以结束)

参考《C语言中的递归》

到此这篇关于C语言深入了解函数的文章就介绍到这了,更多相关C语言函数内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

C语言深入了解函数

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

深入了解C语言中的字符串和内存函数

本文主要带大家来学习一些常用的库函数。有了这些库函数,我们可以更加方便地操作字符串和内存,从而提升我们的编码效率。话不多说,我们开始吧
2022-11-13

深入了解Go语言函数的进阶技巧

偷偷努力,悄无声息地变强,然后惊艳所有人!哈哈,小伙伴们又来学习啦~今天我将给大家介绍《深入了解Go语言函数的进阶技巧》,这篇文章主要会讲到等等知识点,不知道大家对其都有多少了解,下面我们就一起来看一吧!当然,非常希望大家能多多评论,给出合
深入了解Go语言函数的进阶技巧
2024-04-04

Go语言之深入理解函数

在计算机程序设计中,函数其实是一种抽象概念,是一种编程接口;通过抽象,能够实现将复杂的系统分解成各种包装了复杂算法的不透明接口,方便彼此相互调用,实现分层、扩展性、便利性等等。
Go函数编程2024-12-02

深入了解一下C语言中的柔性数组

柔性数组是在C99中定义的,即结构体的最后一个元素允许是未知大小的数组,这就叫柔性数组。这篇文章将通过简单的示例为大家介绍一下柔性数组的使用,感兴趣的可以了解一下
2023-02-13

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录