【c语言】函数的相关知识

函数的定义

返回值类型 函数名(形式参数列表) /*函数头*/

{ /*函数体*/

变量声明

函数实现过程

}

函数头:

返回值类型

非void:必须使用return语句来进行返回一个值

void:不适用return语句也不返回任何值,若使用了return语句则会编译报错

函数名:

只要是合法的标识符即可,一般为了理解尽量要见名知意

形式参数

函数被调用时应该接收到的参数

注意:

函数头后面不能加分号否则会导致编译错误

函数体:

在函数体中,不能有定义与形式参数名称相同的局部变量

一个函数中不允许定义另外一个函数,但是可以调用另外一个函数

函数的调用

若是函数的调用在定义之前,则需要先进行声明

若是函数的调用在定义之后,则可以省去声明

函数的声明

返回值类型 函数名(参数列表);

在形式参数列表中需要指出形式参数的类型

函数的调用为:

函数名(实参列表);

在实参列表中则不需要指出实参的类型

实参与形参

实参即为函数调用时的实际参数

形参即为函数定义是的形式参数

实参的个数、类型和顺序,应该与被调用的函数所要求的参数个数、类型和顺序一致,才能正确完成数据传递

变量的存储类型

变量拥有存储周期,分为两种,即自动存储周期和静态存储周期

拥有自动存储周期的变量在执行其所在模块时被创建,在推出其所在模块时被释放

拥有静态存储周期的变量在整个程序运行期间都存在,并占用同一个存储单元

  • auto:自动存储,我们默认声明的变量都为auto类型,可以节约内存
  • static:静态存储周期的变量在整个程序的运行期间都能够拥有永久的存储单元都会保留变量的值
  • extern:对于定义的变量进行声明,可以使几个源文件共享一个变量
  • register:将变量存储在寄存器中,拥有更快的处理速度

局部变量和全局变量

c语言把在函数内部或者复合语句内声明的变量称为局部变量

其只在函数内部或者复合语句内有效

对于静态局部变量来说,未给其则默认为0

对于局部变量来说,未给其赋值则为垃圾值

在同一个源文件当中,允许外部变量和局部变量同名

如果一个变量在所有函数外部进行声明,那么这个变量即为全局变量

全局变量可以在程序的任何一个位置进行访问

若全局变量的值改变,则会影响到其他函数中全局变量的值

内部函数和外部函数

内部函数:所定义的函数只能在本文件中使用

对于函数额外使用static进行修饰即可

外部函数:所定义的函数可以被多个源文件使用

对于函数额外使用extern进行修饰即可

数学函数

要加#include<math.h>

  • abs:整数绝对值函数

int a=abs(a);

  • labs:长整型绝对值函数

long a=labs(a);

  • fabs:实型数绝对值

float a=fabs(a);

double a=fabs(a);

三角函数

  • sin求取正弦

double x;

double y=0.225;

x=sin(y);

  • cos求取余弦

double x;

double y=0.225;

x=cos(y);

  • tan求取正切

double x;

double y=0.225;

x=tan(y);

字符函数

要加#include<ctype.h>

  • isalpha:检查是否为英文字母,是返回1,否返回0
  • isdigit:检查是否为数字,是返回1,否返回0
  • isalnum:检查是否为字母或数字,是返回1,否返回0

字符串函数

要加#include<string.h>

  • strcpy:strcpy(字符数组1,字符数组2);

把字符数组2的内容复制到字符数组1当中,结束标志也一同复制

字符数组1要有足够的长度且必须为字符数组名形式。字符数组2可以为字符数组名形式也可以为一个字符常量,字符串之间的赋值不能使用等号

  • strcat:strcat(字符数组1,字符数组2);

将字符数组2连接到字符数组1末尾并删去字符数组1结尾的"\0"标志

字符数组1应有足够的长度

  • strcmp:strcmp(字符数组1,字符数组2);

按照ASCII顺序比较字符数组1与字符数组2

字符数组1=字符数组2 返回0

字符数组1>字符数组2 返回正数

字符数组1<字符数组2 返回负数

  • strupr:strupr(字符数组名)

将字符串中的所有小写字母转换为大写字母

  • strlwr:strlwr(字符数组名)

将字符串中的所有大写字母转换为小写字母

  • strlen:strlen(字符数组名)

获取字符串数组的长度

相关推荐
艾莉丝努力练剑1 小时前
【LeetCode&数据结构】单链表的应用——反转链表问题、链表的中间节点问题详解
c语言·开发语言·数据结构·学习·算法·leetcode·链表
不知道叫什么呀6 小时前
【C】vector和array的区别
java·c语言·开发语言·aigc
秋说7 小时前
【PTA数据结构 | C语言版】顺序队列的3个操作
c语言·数据结构·算法
秋说9 小时前
【PTA数据结构 | C语言版】字符串插入操作(不限长)
c语言·数据结构·算法
遇见尚硅谷11 小时前
C语言:20250714笔记
c语言·开发语言·数据结构·笔记·算法
koooo~18 小时前
JavaScript 与 C语言基础知识差别
c语言·开发语言·javascript
mit6.82418 小时前
[Nagios Core] 通知系统 | 事件代理 | NEB模块,事件,回调
c语言·开发语言
mit6.82418 小时前
[Nagios Core] 事件调度 | 检查执行 | 插件与进程
c语言·开发语言·性能优化
刃神太酷啦19 小时前
C++ 多态详解:从概念到实现原理----《Hello C++ Wrold!》(14)--(C/C++)
java·c语言·c++·qt·算法·leetcode·面试
弱冠少年20 小时前
ESP-Timer入门(基于ESP-IDF-5.4)
c语言