C语言基础补充知识点

引言

      C语言学习笔记(上)-CSDN博客C语言学习笔记(中)-CSDN博客C语言学习笔记(下)-CSDN博客这三篇博客已经将C语言的知识点介绍了一下,C语言的基础部分还差函数的知识点还未介绍,本篇笔记将书接上文,补充函数的相关知识点。

一、函数

        函数就是将能实现某些功能的代码封装成代码块,当想要调用函数相应的功能时,可以使用定义的函数名字调用这个功能。例如puts、gets、printf、scanf等函数。

1.函数的结构

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

        此处写实现功能的代码块

}

 1.1函数结构举例

 void myfunction(void){

        printf("hello world\n");

        return;

]

         这个函数的功能时打印一次hello world,void是函数的返回值类型,myfunction是函数名,{}里面的是函数体,return是用来返回函数执行的结果,没有函数值的时候直接写return,或者不写,如果有返回值,返回值的类型需要和函数名前面的类型保持一致。

2.函数调用

        一个完整的程序是由一个main函数和若干个子函数构成的。

        函数一但定义好之后,就可以被其他的函数调用了。

2.1调用函数的格式 :

         函数名(参数)

  如果没有参数,()必须写,并且智能空着,不能写void ,程序的执行顺序是遇到调用的函数,则先跳到调用的函数执行,执行完成后回调到主函数。

3.函数的声明:

        函数的声明的作用就是提前将函数加载一下,避免函数之间相互调用的时候出现不认识的情况,产生报错。

4.函数的参数:

        在函数中实现功能的过程中,有些值和函数内部并没有的,这时就需要调用者通过参数的方式将函数传递过去

        函数的参数有着实际参数和形式参数之分,函数的调用()里面的叫做函数的实际参数,定义函数的()里面的叫函数的形式参数,函数中使用形式参数相当于使用实参的值,并且更改形式参数,并不会改变实际参数的值,因为形式参数和实际参数不在同一块内存空间。

5.函数的返回值:

        函数的返回值是为了在有些函数的返回值给调用者,调用者可以自己决定如何处理这个执行的结果,需要用到的函数的返回值就写,如果不需要用,也可以不写。

6.全局和局部:

        全局变量和局部变量之间的区分是看占用的空间什么时候被收回,还有在哪个范围内可以访问。

6.1全局变量

        没有被任何{}包住的就叫做全局变量,如果全局变量初始化了就在data段,没初始化就在bss段。生命周期是整个程序结果,作用域是整个文件。

6.2局部变量

        被{}包住的变量叫做局部变量,局部变量在栈区。生命周期就是最近的{}结束,作用域是当前最近的{}内部。

7.函数的传参方式

7.1全局传参

        一般情况下,不常用

7.2复制传参(值传递)

        功能就是将函数内部的计算的结果赋值给另一个变量,这种的传参方式叫做复制传参(值传递)。下面的例子就是如此,x和y计算后的结果赋值给z

void my_function(int x,int y,int z){

        x = x*2;

        y = y*2;

        z = x+y;

}

7.3地址传参(地址传递)

        功能就是将函数内部的计算结果保存在一处内存空间,然后使用一个指针指向该内存,此时就是地址传参。下面的例子就是如此,x和y计算后的结果保存在某处内存,并用z指针指向该内存空间。

void my_function(int x,int y,int *z){

        x = x*2;

        u = y*2;

        *z = x+y;

}

8.数组的传参方式

8.1字符串的传参

        字符串传参只需要传递首地址就行,因为字符串有‘\0’作为结束的标志。数组传参传首地址相当于地址传递通过指针是可以修改实参的,所以这种情况一般都使用 const 修饰形参的指针,防止修改

8.2一维整型数组传参

        一维整型数组的传参,既要传首地址,还要传数组的长度,

        一般写法 void a_arr(int *p, int len)

8.3二维数组的传参方式

        二维数组传参时需要用到数组指针

        一般写法void a_arr(int (*p)[4], int  hang, int lie)

9.指针函数

        指针函数是一个函数,返回值是一个指针类型,指针函数不能返回局部变量的地址,因为函数调用结束后,局部变量占用的内存空间就被操作系统回收了,所以指针函数可以返回全局变量的地址,static关键字修饰的局部变量的地址、由参数传递过来的地址

        

        

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

译泽在努力

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值