专栏/从零开始学C语言(7)

从零开始学C语言(7)

2021年08月02日 11:17--浏览 · --点赞 · --评论
大帅哥安澜
粉丝:40文章:42

复习:

自定义函数:

    1、函数声明 

        告诉编译器函数的格式,方便它检查调用者的参数、返回值

    2、隐式声明

        当调用函数时如果没有函数声明、定义,编译器会猜测函数的格式,函数的参数按照调用者提供的实参猜测,返回值默认猜测为int类型

        C89:完全猜对,没有警告

        C99:完全猜对,也会警告

    3、函数定义

        函数的定义出现在调用之前,可以省略声明

    4、函数传参

        值传递:

            普通变量,函数之间不能共享同名变量(局部)

        址传递:

            数组,数组长度会丢失,需要额外增加一个参数传递数组的长度,同时该数组能够被两个函数共享(调用者和被调用者)

                void func(int arr[],int len)

                func(arr,10);

        返回值:return语句不是把返回值数据直接传递给调用者,而是把该数据放入他们都能访问的位置,然后调用者去读取。因此函数中没有return语句,调用者也会去读取,只是该位置的数据是一个随机的垃圾数据


进程映像:

    程序:存储在磁盘上的可执行文件(二进制、脚本)

    进程:在系统中正在运行的程序

    进程映像:指的是进程的内存分布情况

    text 代码段 二进制指令

         只读段 常量

         只读的,强制修改会产生段错误

    data 数据段

         初始化过的全局变量、初始化化过的静态局部变量

    bss  静态数据段

         未初始化过的全局变量、未初始化化过的静态局部变量

         运行前该段会自动清零,默认值是0

    heap 堆

         由程序员手动管理,缺点:使用麻烦,优点:足够大

    stack 栈

         局部变量、块变量

         由系统管理、会随着函数的调用自动分配内存、函数的结束释放内存

         优点:使用方便 缺点:大小有限,超过会段错误


变量的分类:

    存储位置、生命周期、使用范围

    全局变量:  定义在函数外

        data或者bss,取决于是否初始化

        从程序运行开始前到执行结束

        任何位置

    局部变量:  定义在函数内

        stack

        从函数调用开始到函数执行结束

        只能在函数内使用

    块变量:    定义在语句块内

        stack

        从定义语句开始到函数执行结束

        只能在语句块内使用

    

    全局、局部、块变量可以同名,同名的局部屏蔽全局,同名的块屏蔽局部、全局变量

    全局变量首字母大写


类型限定符:

    auto

        用于定义自动申请、释放内存的变量,不加就代表加

        不能在全局变量前使用,也不能与static同时使用

    extern

        用于声明外部的全局变量

        当a.c中定义一个全局变量,b.c中如果想要使用就需要用extern声明一下

        如果没有,只能通过编译,不能通过链接

        不能对声明语句赋值

    static

        改变存储位置

            局部变量、块变量,由stack改为data或bss

        延长生命周期

            局部变量、块变量,函数结束时不会被自动销毁,它们的初始化语句只有第一次时生效

        限制使用范围

            全局变量、函数,限制为本文件内使用

    

    const

        "保护"变量不被显式地修改

        初始化过的全局变量、静态局部变量被const修饰后存储位置会变成text,变成了真正的常量

    

    volatile

        如果变量没有显示地被修改,再次使用该变量时会继续使用上一次读取的结果,而不会读取内存(取值优化)

        如果有些变量可能被隐式地修改,想要随时读取准确的数值,就需要使用volatile修饰一下

        在硬件、多线程编程使用


    register

        申请把变量的存储位置由内存改为寄存器,提高变量的读写速度,从而提高程序运行速度

        由于寄存器数量有限,不是每次申请都能成功

        注意:这种变量不能取地址


    typedef

        类型重定义,如果在定义变量前加typedef,变量名就等同于类型

        常见 size_t time_t uint8_t... 都是使用typedef重新定义出来的

        typedef int INT

        注意:不是替换

        #define 


五子棋:

    需要的数据:(全局)

        1、定义棋盘二维数组  15*15 空位置 '*'

        2、定义棋子角色变量 白棋 '#' 黑棋 '$'

        3、定义变量用于记录下棋的位置

      

    业务逻辑:(实现成一个个函数)

        是否需要初始化

        for(;;)

        {

            1、清理屏幕、打印棋盘

            2、落子

                输入坐标,坐标合法、该位置不能有棋子,否则继续落子

            3、判断是否五子连珠

            4、交换角色            

        }



投诉或建议

玻璃钢生产厂家郴州玻璃钢雕塑设计公司青海玻璃钢几何雕塑景观校园玻璃钢雕塑厂家盐城玻璃钢雕塑厂家报价锦州园林玻璃钢雕塑生产厂家衡阳玻璃钢牛雕塑四川泡沫玻璃钢雕塑横县玻璃钢雕塑价格常德仿铜西式玻璃钢雕塑重庆多彩玻璃钢雕塑销售电话甘南仿真玻璃钢雕塑定制重庆玻璃钢雕塑在哪里买福建仿铜玻璃钢雕塑优势铜川玻璃钢关公雕塑扬州玻璃钢雕塑定制辽宁火烈鸟玻璃钢雕塑制作防城港玻璃钢雕塑价格河源玻璃钢仿砂岩雕塑商场 美陈 工艺重庆巴南玻璃钢雕塑石家玻璃钢雕塑玻璃钢卡通警察造型雕塑通道商场美陈批发价珠三角玻璃钢雕塑小猪佩琪玻璃钢雕塑报价优质商家江阴商场开业美陈扬州人物玻璃钢雕塑玻璃钢维拉斯真人雕塑玻璃钢雕塑行业论坛浙江玻璃钢海洋馆雕塑定做香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化