• 参数与变量


    在线C环境:https://clin.icourse163.org/

     

    1. 函数原型

    2.如果不知道

    也就是把要调⽤的函数放到 下⾯了

    旧标准会假设你所调⽤的函 数所有的参数都是int,返回 也是int

    如果恰好不对...

    3. 函数原型

    • 函数头,以分号“;”结尾,就构成了函数的原型 • 函数原型的⺫的是告诉编译器这个函数⻓什么样
    1. 名称
    2. 参数(数量及类型)
    3. 返回类型
    • 旧标准习惯把函数原型写在调⽤它的函数⾥⾯
    • 现在⼀般写在调⽤它的函数前⾯
    • 原型⾥可以不写参数的名字,但是⼀般仍然写上

    参数传递

    4.调⽤函数

    • 如果函数有参数,调⽤函数时必须传递给它数量、 类型正确的值
    • 可以传递给函数的值是表达式的结果,这包括:
    1. 字⾯量
    2. 变量
    3. 函数的返回值
    4. 计算的结果

    5. 类型不匹配?

    调⽤函数时给的值与参数的类型不匹配是C语⾔传统 上最⼤的漏洞

    编译器总是悄悄替你把类型转换好,但是这很可能不 是你所期望的

    后续的语⾔,C++/Java在这⽅⾯很严格

    6. 传过去的是什么?

    这样的代码能交换a和b的值吗?

    #include <stdio.h>
    
    void swap(int a,int b);
    int main() {
    
        int a=5;
        int b=6;
        swap(a,b);
     
      printf("a=%d b=%d\n",a,b);
       
        return 0;
    }
    
    void swap(int a,int b){
        int t=a;
        a=b;
        b=t;
    }

    C语⾔在调⽤函数时,永远只能传值给函数

    7. 传值

    • 每个函数有⾃⼰的变量空间,参数也位于这个独 ⽴的空间中,和其他函数没有关系
    • 过去,对于函数参数表中的参数,叫做“形式参 数”,调⽤函数时给的值,叫做“实际参数”
    • 由于容易让初学者误会实际参数就是实际在函数 中进⾏计算的参数,误会调⽤函数的时候把变量 ⽽不是值传进去了,所以我们不建议继续⽤这种 古⽼的⽅式来称呼它们
    • 我们认为,它们是参数和值的关系

    8.本地变量

    • 函数的每次运⾏,就产⽣了⼀个独⽴的变量空间,在 这个空间中的变量,是函数的这次运⾏所独有的,称 作本地变量

    • 定义在函数内部的变量就是本地变量

    • 参数也是本地变量

    9. 变量的⽣存期和作⽤域

    • ⽣存期:什么时候这个变量开始出现了,到什么时候 它消亡了

    • 作⽤域:在(代码的)什么范围内可以访问这个变量 (这个变量可以起作⽤)

    • 对于本地变量,这两个问题的答案是统⼀的:⼤括号 内——块

    10.本地变量的规则

    • 本地变量是定义在块内的

    1. • 它可以是定义在函数的块内
    2. • 也可以定义在语句的块内
    3. • 甚⾄可以随便拉⼀对⼤括号来定义变量

    • 程序运⾏进⼊这个块之前,其中的变量不存在,离开这个块,其中的变量 就消失了

    • 块外⾯定义的变量在⾥⾯仍然有效

    • 块⾥⾯定义了和外⾯同名的变量则掩盖了外⾯的

    • 不能在⼀个块内定义同名的变量

    • 本地变量不会被默认初始化

    • 参数在进⼊函数的时候被初始化了

    11. 没有参数时

    • void f(void);
    • 还是
    • void f();
    1. 在传统C中,它表⽰f函数的参数表未知,并不表⽰ 没有参数

    12.逗号运算符?

    • 调⽤函数时的逗号和逗号运算符怎么区分?
    • 调⽤函数时的圆括号⾥的逗号是标点符号,不是运算 符
    1. f(a,b)
    2. f((a,b))

    13.函数⾥的函数?

    C语⾔不允许函数嵌套定义

    14. 这是什么?

    • int i,j,sum(int a, int b);

    • return (i);

    15. 关于main

    • int main()也是⼀个函数

    • 要不要写成int main(void)?

    • return的0有⼈看吗?

    • Windows:if errorlevel 1 …

    • Unix Bash:echo $?

    • Csh:echo $status

  • 相关阅读:
    TCP 和 UDP 的区别
    python--各种锁机制归纳整理
    七牛的配置
    全文检索的配置
    记一则css3计算
    C# 生成序号不足补0
    JavaScript Post提交数据并跳转到页面(模拟Form表单提交)
    Swift 修改UITextField.Placeholder颜色
    Swift 延迟运行代码
    Swift 动画片段
  • 原文地址:https://www.cnblogs.com/hechunfeng/p/15696470.html
Copyright © 2020-2023  润新知