首页
社区
课程
招聘
[分享]C语言基础六-函数
2021-5-24 16:50 2977

[分享]C语言基础六-函数

2021-5-24 16:50
2977

main函数

1
2
3
4
int main(int argc, char *argv[])
{
    return 0;
}

程序会通过命令行传递参数,argc是参数的个数,参数存放在argv[]数组中,包含程序名称本身。C语言还规定argc必须是整型变量,argv必须是指向字符串的指针数组。

库函数和自定义函数

C语言在发布时已经为我们封装好了很多函数,它们被分门别类地放到不同的头文件中,使用函数时引入对应的头文件即可。C语言自带的函数称为库函数,库是编程中的一个基本概念,可以简单地认为它是一系列函数的集合,在磁盘上往往是一个文件夹。C语言自带的库称为标准库,其他公司或个人开发的库称为第三方库。除了库函数,我们还可以编写自己的函数,拓展程序的功能,自己编写的函数称为自定义函数。

函数的定义

这里的函数不是数学上的函数,函数指的是解决问题的基本代码。C语言中,把能够实现某一特定功能的所有语句归纳在一起,就形成了一个函数。一般来说,函数只实现单一功能。

1
2
3
4
5
6
7
/*
返回值类型 函数名(参数列表)
{
    实现语句;
    返回语句;
}
*/

参数列表:输入参数、输出参数、输入输出参数,无参数用void。
变参函数:函数的参数数量不确定,例如printf()函数。

  • 无参数无返回值函数的定义
1
2
3
4
5
//函数PrintTest,打印字符串
void PrintTest()
{
    printf("%s\n","test");
}
  • 有参数有返回值函数的定义
1
2
3
4
5
6
//函数FunAdd,求两个数的和
int FunAdd(int nNumA,int nNumB)
{
    int nNumC = nNumA + nNumB;
    retrun nNumC ;
}

函数的参数

  • 传值:形参值是对实参值的一个拷贝,形参和实参是不相关的,无法通过修改形参值来修改实参值。
  • 传指针:形参值是对实参地址的一个拷贝,通过修改地址可以实现对实参值的修改。
  • 传引用:形参是对实参的一个引用,相当于实参的别名,形参就是实参本身,修改形参就是修改实参。
  • 传指针和传引用是把地址传递给函数,这个过程只涉及到4个字节或者8个字节的地址传输,传值会随着实参类型的不同,传递的字节大小也不同。
  • 传引用比传指针更安全,引用一旦初始化,就不会再改变,既有传指针的高效,又有传值的方便。

数组做函数参数时的两种情况,要防止溢处:

  1. 传数组的值,把数组的元素一起传递给函数。
  2. 传数组的引用,把数组的首地址传递给函数。

模块化设计思想

  • 一个函数尽可能只实现一个功能
  • 分析输入输出,确立函数的原型
  • 严进宽出,对输入参数进行判断
  • 边界考虑,考虑特殊情况
  • 变量都要初始化
  • 不要让被调用者分配内存,容易造成内存泄露
  • 返回值不能是指向栈内存的指针或引用,因为该内存在函数体结束时被自动释放

面对过程和面向对象

面对过程:把问题分解成若干步骤,每个函数实现一个步骤,一步步实现,使用时把数据传递给函数,运算得到结果。
面对对象:抽象出各种对象,把数据和解决问题的方法封装在对象中,然后各个对象之间通过行为完成运算。

github:https://github.com/0I00II000I00I0I0

bilibili:https://space.bilibili.com/284022506


[培训]二进制漏洞攻防(第3期);满10人开班;模糊测试与工具使用二次开发;网络协议漏洞挖掘;Linux内核漏洞挖掘与利用;AOSP漏洞挖掘与利用;代码审计。

最后于 2021-5-24 17:31 被流照君编辑 ,原因:
收藏
点赞2
打赏
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回