1219学习总结

函数
1.函数的基本概念
函数是把代码中功能相似并且独立的代码单独封装称一个独立的整体;

(1)函数的优点
    提高代码的简洁性,提高开发效率
    提高代码的重用性
    有利于程序的维护
(2)函数的分类
分类一:
    系统函数
        由C系统提供的函数;如:printf(),scanf(),gets(),puts()
        调用系统函数时,只需要将其对应的头文件夹包含进来即可
        #include<stdio.h>----->printf("hello!");
        powa,b)------>计算a的b次方
        toupper------->小写字母转大写字母
        tolower------->大写字母转小写字母
    自定义函数:
        用户根据需要自己定义的 函数
分类二:
    有返回值函数:
        函数调用结束后,会返回一个数值给主调函数;
    无返回值函数:
        函数调用结束后,没有返回值,一般定义为void类型,即空类型。
分类三:
    有参函数:
        参数可以任意多个
    无参函数

2.函数的基本定义:

(1)无参函数的定义
    DataType FunctionName()
    {
        //函数体
        //可执行语句
    }
    注:函数名后的括号不可以省略!!!
(2)有参函数的定义
    DataType FunctionName(Type arg1,Type arg2)
    {
        //函数体
    }   
    注:参数列表可以有多个,参数的类型可以任意(相对)
(3)函数的定义,函数的声明以及函数的调用
    函数的定义
        DataType FunctionName(参数列表)
        {
            //函数体
        }
    函数的声明:
        DataType FunctionName(参数列表)
        注:声明时,参数列表一定要和定义时的参数列表一致!!
        main函数在自定义函数之后可以不要声明。
    函数的调用:
        FunctionName(value);
        value:数值    
        注:函数调用实参的值的类型,一定要和函数定义时的形参列表一致!
        函数调用可以在任何位置。
    实参:实际参数,即具体的数值
    形参:形式参数,
    注:函数名表示函数的入口地址。
        函数之间是等价的,没有优先级问题。即平行关系!
        形参在发生调用时分配空间!
        在发生函数调用时,系统会默认将实参的值赋给形参!

3.函数的返回值

    无返回值的类型函数类型为:void
    DataType FuncName(参数列表)
    {
        //函数体
    }
    DataType:决定了函数返回值的类型,若是int。则函数返回值为int型
            若为double,则函数返回值为double型
    如果函数的返回值能够在后面的程序中使用,则需要相同类型的变量接收返回值
    若是void类型函数,则无返回值,return可有可无
    若函数不是void类型,则必须要有return!!!

4.return的作用

    (1)函数遇到return则结束,后面的代码不再执行
    (2)用于返回函数的值,即返回结果

5.关键字

(1)变量分为全局变量和局部变量
    全局变量:在函数外定义的变量
        其作用域是从变量定义处开始,一直到本文件结束,定义之前不可使用
    局部变量:在函数内定义的变量,其作用域是整个函数!
        函数结束时,局部变量会释放,因此,不同的函数中可以使用相同的变量名
    若局部变量与全局变量重名,则自动屏蔽全局变量
    auto:声明动态变量,可以省略
        如:(auto) int a = 0;
        动态全局变量
            作用域:从定义出开始,到文件末
            生命周期:整个程序运行期间
        动态局部变量
            生命周期:仅限于定义的函数中
    static:声明变量为静态变量;
        作用域:从定义初开始,到文件结束
        生命周期:整个程序运行期间
        静态变量若定义时没有初始化,则系统默认初始化为0
        静态变量只初始化一次!!!
        静态函数:static修饰函数,则此函数只能用于本文件
    extern:声明为外部变量:extern int sum;
        修饰函数:extern int test();
        声明变量或函数在外部已经定义。
    register:寄存器变量:变量直接存放在寄存器中,
        CPU的寄存器个数有限,不可以定义多个寄存器变量
        优点:速度快!!
    const:常量,不可更改其值,相当于只读变量。
        const int num = 5;
        int const num = 5;  两者意义相同
        const int *p;
        int const *p;   //指针值不可改变
        int* const p;   //指针的地址不可改变
        const int* const p; //指针的值跟地址都不可改变

6.函数的传参

    传值:仅仅是对值的操作,并没有改变变量地址里的内容
    传址:对地址操作,修改变量对应地址的内容

7.指针函数和函数指针

    指针函数:
        int *test();
        返回一个局部地址是不允许的,没有意义
        注意返回值问题,返回的是一个地址!!!
    函数指针:
        int (*pa)();
        指针的类型:int (*)()

总结

函数在我看来就是把程序模块化,把需要不同功能的地方单个提取出来并加以修饰,让它适用范围更广,提高后面编程的效率。
在使用函数的时候要注意函数的传参跟传址,当然大部分情况下传址的适用性跟广一点。
还有注意函数返回值的类型以及函数的应用,形参跟实参一定要一一对应,并且保持类型的一致
而且每个函数中几乎都有局部变量。注意局部变量的生命周期,不要乱用,并分清局部变量跟全局变量的区别。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,948评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,371评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,490评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,521评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,627评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,842评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,997评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,741评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,203评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,534评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,673评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,339评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,955评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,770评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,000评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,394评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,562评论 2 349

推荐阅读更多精彩内容

  • 史上最全的iOS面试题及答案 iOS面试小贴士———————————————回答好下面的足够了----------...
    Style_伟阅读 2,346评论 0 35
  • 原文地址:C语言函数调用栈(一)C语言函数调用栈(二) 0 引言 程序的执行过程可看作连续的函数调用。当一个函数执...
    小猪啊呜阅读 4,598评论 1 19
  • __block和__weak修饰符的区别其实是挺明显的:1.__block不管是ARC还是MRC模式下都可以使用,...
    LZM轮回阅读 3,292评论 0 6
  • 但这世界上哪有什么善意的谎言 怕真话带来伤害的人 是因为不知道谎言有多可怕
    xhxh阅读 234评论 0 0
  • 我觉得没看过《撬动幸福》,可能还没有发言权,仅对这一段话发表点小想法:钱与幸福几乎不相关,但钱所带来的增值享受是不...
    小小博2011阅读 247评论 2 0