【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(字符数组名)

获取字符串数组的长度

相关推荐
zhangzhangkeji2 小时前
c/c++ 里的进程间通信 , 管道 pipe 编程举例
c语言·c++
2401_843785233 小时前
C语言 扫雷程序设计
c语言·算法
毒丐5 小时前
GCC使用说明
linux·c语言·c++
可喜~可乐6 小时前
总线通信接口I²C以及SPI入门指南:从原理到实践
c语言·stm32·单片机·嵌入式硬件
矮油0_o7 小时前
Ⅱ.INTRODUCTION TO CUDA C (CUDA C 入门)
c语言·开发语言·gpu算力·cuda c
麻瓜老宋9 小时前
【手搓一个脚本语言】七、用C语言抽象语法树AST实现一个可交互运行的表达式计算器
c语言·开发语言·数据结构·算法
最后一个bug10 小时前
linuxC语言从Http服务器上获得文件
linux·服务器·c语言·arm开发·嵌入式硬件
小白的登仙路20 小时前
进程间通讯
linux·c语言·进程间通讯
graceyun21 小时前
牛客网刷题 ——C语言初阶(6指针)——字符逆序
c语言·开发语言
graceyun1 天前
牛客网刷题 ——C语言初阶(5操作符)——OR76 两个整数二进制位不同个数
c语言·开发语言