函数 C语言】

article/2025/9/21 21:58:13

函数的声明和定义

函数间调用关系是,由于函数调用其他函数,替他函数也可以互相调用,同一个函数可以被一个或多个函数调用任意次。
先声明,后调用。

#include <stdio.h>  //去标准库下找文件
#include "stdio.h"  //在当前目录下找自己定义的头文件 

C语言的编译和执行具有一下特点:

  1. 一个C程序由一个或多个程序模块组成,每个程序模块作为一个源程序文件。对于较大的程序,通常将程序内容分别放在若干源文件中,再由若干源程序文件组成一个C程序。这样处理便于 分别编写、分别编译,进而提高调试效率。一个源程序文件可以为多个C程序共用。
  2. 一个源程序文件由一个或多个函数及其他有关内容(如命令行、数据定义等)组成。一个源程序文件是一个编译单位,在程序编译时是以源程序文件为单位而不是以函数为单位进行编译的。main.c和func.c 分别单独编译,在链接成为可执行文件时,main中调用的函数printstar和print_message会通过链接去找函数定义的位置。
  3. C程序的执行是从main函数开始的,如果在main函数中调用其他函数,那么在调用后会返回到main函数中,在main函数中结束整个程序的运行。
  4. 所有函数都是平行的,即在定义函数时是分别进行的,并且是相互独立的。一个函数并不从属于另一个函数,即函数不能嵌套定义。函数可以互相调用,但不能调用main函数。main函数是由系统调用的。main函数中调用print_message函数,而print_message函数中又嗲用printstar函数,我们把这种调用成为 “嵌套调用”。

函数声明与定义的差异:

  1. 函数的定义是指对函数功能的确立,包括制定函数名、函数值类型、形参及其类型、函数体等,它是一个完整的、独立的函数单位。
  2. 函数的声明的作用是把函数的名字、函数类型及形参的类型、个数和顺序通知编译系统,以便在调用该函数时编译系统能正确识别函数并检查调用是否合法。
    隐式声明:C语言中有几种声明的函数名可以省略。例如,函数如果不显式地声明返回值类型,那么它默认返回类型。

函数的分类和调用

用户角度:

  1. 标准函数
  2. 自己定义的函数
    1. 无参函数
    类型标识符 函数名(){声明部分语句部分
}
3. 有参函数 		
类型标识符  函数名(形式参数列表){声明部分语句部分
}

函数的递归调用

函数自身调用自身的操作,称为递归函数,递归函数一定要有结束条件。
递归的核心是找递归公式:
例如:n! 的 f(n)=n*f(n-1)

#include <stdio.h>//假如有n个台阶,一次只能上一个台阶或两个台阶,请问走到第n个台阶共有几种走法
int step(int n){if(1==n||2==n){  //当台阶数是1个或者2个时,递归结束return n;}return step(n-1)+step(n-2);
}
int main() {int n;scanf("%d",&n);printf("%d\n",step(n));return 0;
}

局部变量与全局变量

全局变量-形参-实参解析

在不同的函数之间传递数据时,可以使用的方法如下:

  1. 参数:通过形式参数和实际参数。
  2. 返回值:用return语句返回计算结果。
  3. 全局变量:外部变量。

在这里插入图片描述
全局变量位于数据段。
int i 位于栈空间。
如果局部变量与全局变量重名,那么将采取就近原则,即实际获取和修改值是局部变量的值。
局部变量在离最近的大括号内有效。

{
int i = 3;
}

全局变量:全程变量 从定义处有效。


http://chatgpt.dhexx.cn/article/AE8dQKJr.shtml

相关文章

【C语言】函数详解

&#x1f525;&#x1f525; 欢迎来到小林的博客&#xff01;&#xff01;       &#x1f6f0;️博客主页&#xff1a;✈️小林爱敲代码       &#x1f6f0;️专栏&#xff1a;✈️C语言快速入门       &#x1f6f0;️欢迎关注&#xff1a;&#x1f44d;点…

C语言函数大全-- s 开头的函数(1)

s 开头的函数&#xff08;1&#xff09; 1. sbrk1.1 函数说明1.2 演示示例 2. scalb&#xff0c;scalbf&#xff0c;scalbl2.1 函数说明2.2 演示示例 3. scalbln&#xff0c;scalblnf&#xff0c;scalblnl3.1 函数说明3.2 演示示例3.3 运行结果 4. scalbn&#xff0c;scalbnf&a…

【详解C语言】函数

文章目录 1. 函数是什么&#xff1f;2. C语言中函数的分类&#xff1a;1. 库函数&#xff1a;2. 自定义函数 3. 函数的参数3.1 实际参数&#xff08;实参&#xff09;3.2 形式参数&#xff08;形参&#xff09; 4. 函数的调用&#xff1a;4.1 传值调用4.2 传址调用4.3 练习 5. …

C语言函数介绍

1.字母的大小写转换-->islower() 2.快速排序函数-->qsort() 下面正式给大家介绍这两个函数 &#xff08;1&#xff09;islower() islower() 函数用来检测一个字符是否是小写字母。 在默认情况下&#xff0c;小写字母包括&#xff1a; a,b,c,d,e,f,g,h,i,j,k,l,m,n,o…

C语言标准库函数大全(ctype、time 、stdio、stdlib、math、string)

文章目录 C语言函数库:一. <ctype.h>二. <math.h>三. <stdio.h>四. <stdlib.h>五. <time.h>六. <string.h> 文档资料 C语言函数库: C语言的常用的标准头文件有 &#xff1a; <ctype.h>   <time.h>   <stdio.h> <…

【C语言进阶】最常用的库函数大全——从入门到精通

目录 前言&#xff1a; 一.字符串函数 1.strlen——求字符串长度 strlen 2.长度不受限制的字符串函数 a.strcpy——字符串拷贝 strcpy b.strcat——追加字符串 strcat c.strcmp——字符串比较 strcmp 3.长度受限制的字符串函数——strncpy,strncat,strncmp 为什么会…

C语言一些常用的函数

目录 sizeof()运算符strlen()函数abort()函数exit()函数Sleep()函数atof()将字符串转换成浮点数atoi()将字符串转换成整型数的函数atol()将字符串转换成长整型数的函数strlwr()函数strupr()函数 sizeof()运算符 sizeof()运算符: 编译器自带的,不用到任何包都能用。用法&…

C语言常用函数详解

函数详解&#xff1a; strlen(字符串长度)sizeof(字节大小)strcmp(字符串比较)strcpy(字符串拷贝)strcat(字符串追加)strncpy(字符串按字节拷贝)strncmp(字符串按字节比较)strncat(字符串按字节追加)strstr(查找字符串)strtok(查找符号)memcpy(按字节拷贝数据&#xff08;任意类…

C语言的中常用的函数

一、main函数 一个C程序就是由若干头文件和函数组成&#xff0c;有且只有一个主函数&#xff0c;即main函数。 #include <stdio.h>int main(){printf("c语言主函数");return 0; } C程序就是执行主函数里的代码&#xff0c;C语言中的唯一入口。 main前面的int…

C语言中常用的函数

C语言中常用的函数 1、putchar()函数2、getchar()函数3、pow( a , b )函数4、sqrt( a )函数5、fabs(a)函数6、puts(字符数组)函数——输出字符串的函数7、gets(字符数组)——输入字符串的函数8、strcat(a , b)函数——字符串连接函数9、strcpy函数——字符串复制函数10、strncp…

C语言中的函数(详解)

目录 1.函数是什么 2.c语言中函数的分类&#xff1a; 2.1. 库函数 2. 自定义函数 3. 函数的参数 3.1 实际参数&#xff08;实参&#xff09; 3.2 形式参数&#xff08;形参&#xff09; 4. 函数的调用&#xff1a; 4.1 传值调用 4.2 传址调用 5. 函数的嵌套调用和链…

linux Ubuntu将默认bash修改为csh

Ubuntu将默认bash修改为csh 前言Linux系统中的shell版本问题修改方法bash切换csh方法 前言 为什么要将默认bash修改为csh&#xff0c;有时候安装的软件命令是基于csh写的&#xff0c;如果用bash使用软件就会报错&#xff0c;如&#xff1a;“No command ‘setenv’ found”&…

配置你的 csh/tcsh

配置你的 csh/tcsh 选择 csh/tcsh 和许多刚从 Linux 转到 BSD 的人不同&#xff0c;我并没有装完 BSD 就顺手安装 bash&#xff0c;因为之前除了打命令&#xff0c;我没有用到额外的功能&#xff0c;bash 也好&#xff0c;csh 也罢&#xff0c;在我眼里都是当做 shell 来用。但…

bash 和 tcsh(csh)的不同,带例子

我使用bash和tcsh(csh)过程中总结出的一些异同&#xff0c;附我的彩色的提示行配置 效果&#xff1a; 自做的彩色提示符 bash PS1 命令提示符 ## PS1\[\033[01;33m\][\D{%y-%m-%d} \t]\[\033[00m\]\[\033[01;32m\][\!]\[\033[00m\]${debian_chroot:($debian_chroot)}\[\03…

Bash与Csh的区别

zz &#xff1a;http://dangdanding.blog.163.com/blog/static/27992981201262595221896/ 一、csh的while循环控制结构及if then: #!/bin/csh -f while ($#argv > 1) if ("$1" "-s") then shift if ($#argv > 1) then set source …

CSH脚本学习

CSH脚本学习笔记(不常见的命令用法) csh中的 > ! 命令与bash中的> 和>| 命令相同&#xff0c;都是写入文件内容。但在bash中表示没有文件则不创建文件。 foreach var &#xff08; list ) command end 是CSH脚本中的循环命令&#xff0c;将list的值逐一赋值给变量var…

Shell编程之Csh和Bash的经验总结

文章目录 前言1. 变量和环境变量设置1. csh2. bash 2. if语句1. csh2. bash 3. while循环1. csh2. bash 4. 数组1. csh2. bash 5. 获取当前文件路径1. csh2. bash 6. 获取当前时间1. csh2. bash 7. 产生随机数并测试1. csh2. bash 8. 补充1. 查看系统默认用的 Shell2. 查看系统…

矩阵转置基本性质

一个矩阵的转置与本身相乘得到对称矩阵 一个矩阵的逆矩阵与本身相乘得到单位矩阵 行列式不等于零&#xff0c;矩阵可逆&#xff0c;反之不可逆 满秩矩阵一定是可逆的

Maple: 矩阵转置

在Maple中用%T的命令执行矩阵转置&#xff0c;具体效果如下

5*5矩阵转置

编写程序&#xff1a;对一个5X5的二维整型数组转置&#xff0c;即行列互换。 要求从键盘输入数组的值&#xff0c;输出转置前及转置后的结果。 如&#xff1a; 输入格式: 输入数组前有如图示的提示&#xff1b; 输出格式: 输出转置前及转置后的结果&#xff0c;输出前有提示…