C语言学习笔记(五)

函数

    函数的本质:

        步骤的封装

    函数分为两种:自定义函数(自己进行封装)和系统提供的函数(已经封装好的)

    封装函数的目的:减少重复步骤--因为我们把重复的步骤封装后,需要使用时直接调用就好了

    函数声明:type function(){}--返回类型+函数名+参数列表+执行语句

    返回类型:

                特别的,void表示没有返回值--或者说返回值的类型为"无"

    函数名:

                参考定义变量的原则

    参数列表

                  数量不限,实际上类型也比较多样--你甚至可以传入数组或者地址

                  函数之间也可以相互嵌套--也就是互相调用--在极端一点--你甚至可以把函数作为返回值

    请注意

                使用形参时,只是复制一份实参,但是修改操作都是在复制来的数值上进行;

                但是使用地址时,存在更改原实参的风险

    函数调用的本质:地址+参数

        ps:函数名单独使用时指的就是函数的地址

内存区域划分

在程序执行时,计算机存在四个区域

    堆区:存放手动申请的空间    

        ps:    void*:泛型指针

        (1)malloc--需要引入<stdlib.h>文档才可以进行使用

            malloc的本质:

                void *malloc(

                    size_t size

                    );

                int* AA(){

                    int *p=malloc(4);

                    *p=100;

                    return p;

                }--本质

        生命周期:手动申请空间时,堆区初始化;手动释放时消亡

        作用域:全局--因为我已经拿到了所需要的地址

        特性:暂无

    栈区:存放所有的局部变量--在作用域(在这里可以理解为"{}"内)内定义的变量/函数的参数

            局部变量:在作用域内定义的变量--函数的形参是其中的一种

            生命周期:声明时创建,作用域结束时会进行回收

            适用范围:所声明的作用域内

            特性:暂无

    字符常量区(严格来说,也可以分为字符常量区和代码段):

    全局/静态变量区:

    (1) 全局变量:定义在程序外部

        生命周期:程序运行时诞生,程序执行结束时销毁

        使用范围:整个程序

        特性:以这种方式定义的变量会被自动初始化为"0";

    (2)静态变量:使用static进行修饰的变量

        生命周期:程序运行时诞生,程序执行结束时销毁

        使用范围:整个程序

        特性:

            <1>若未对变量进行初始化,则以这种方式定义的变量会被自动初始化为"0";

            <2>不可进行数值更改的操作

    malloc单纯就是申请空间,至于如何使用--那是后续要考虑的事情

        ps:<1>所申请的空间的单位为字节

            <2>函数执行完毕后,不会被回收--这样说不太准确--实际上是因为主函数已经拿到了地址

    free(local);//手动释放空间--切记请不要二次释放空间

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值