zoukankan      html  css  js  c++  java
  • C语言入门-函数

    一、初见函数

    求出1到10、20到30和35到45的三个的和

    #include <stdio.h>
    
    // 定义一个函数
    void sum(int begin, int end)
    {
    	int sum = 0;
    	int i = 0;
    	for (i = begin; i <= end; i++)
    	{
    		sum += i;
    	}
    	printf("%d到%d的和是%d
    ", begin , end , sum);
    }
    
    int main()
    {
    	sum(1,10);
    	sum(20,30);
    	sum(35,45);
    	return 0;
    }
    

    二、函数的定义和使用

    1. 函数是一块代码,接收零个或者多个参数,做一件事,并返回另个或者一个值
    2. 其他的和java差不多,这里就不详细记录了

    从函数中返回值

    // 定义返回值的类型
    int max(int a , int b)
    {
    	int ret;
    	if (a > b){
    		ret = a;
    	}else{
    		ret = b;
    	}
    	// 这个就是返回值
    	return ret;
    }
    
    int main()
    {
        // 接收返回的值
    	int x = max(3,6);
    	printf("%d
    ", x);
    
    	return 0;
    }
    

    三、函数的先后关系

    像上面把max函数写在上面是因为:

    1. c的编译器自上而下的顺序分析你的代码
    2. 在看到max函数的时候,他要知道max函数的样子
    3. 也就是max函数需要几个参数,每个参数如何,返回什么类型
    4. 如果main函数写在上面的话,需要把自己定义的函数先进行声明,但是现在大部分编译器也可以不用声明了
    // 进行声明
    int max(int a , int b);
    
    int main()
    {
    	int x = max(3,6);
    	printf("%d
    ", x);
    	return 0;
    }
    
    
    // 定义返回值的类型
    int max(int a , int b)
    {
    	int ret;
    	if (a > b){
    		ret = a;
    	}else{
    		ret = b;
    	}
    	// 这个就是返回值
    	return ret;
    }
    

    参数传递

    类型不匹配?

    1. 调用函数时给的值与参数的类型不匹配是C语言传统上最大的漏洞
    2. 编译器总是把你类型转换好,但这可能不是你所期望的
    3. 后面的语言,c++/java在这方面很严格
    void cheer(int i)
    {
    	printf("cheer %d
    ", i);
    }
    
    int main()
    {
    	double f = 8.4;
    	cheer(f);  // 8
    	cheer(2.0);  // 2
    
    	return 0;
    }
    

    四、传值

    1. 每个函数有自己的变量空间,参数也位于这个独立的空间中,和其他函数没有关系
    2. 过去,对于函数参数表中的参数,称“形式参数”,调用是给的参数叫“实际参数”

    五、本地变量(局部变量)

    1. 函数的每次运行,就产生一个独立的变量空间,在这个空间中的变量,就是函数的这次运行多独有的,称之为本地变量
    2. 定义在函数内部的变量就是本地变量
    3. 参数也是本地变量

    变量的生存期和作用域

    1. 生存期:什么时候这个变量开始出现了,什么时候消亡了
    2. 作用域:在代码的什么范围内可以访问这个变量
    3. 对于本地变量:前面两个问题的答案都是 --- 在大括号内

    本地变量的规则

    1. 本地变量都是定义在块(大括号)内的
      • 他可以是定义在函数的块内
      • 也可以定义在语句的块内
    2. 程序运行进入这个块之前,其中的变量不存在,离开这个块,其中的变量就消失了
    3. 块外面定义的变量在里面仍然有效
    4. 块里面定义了和外面同名的变量则覆盖了外面的
    5. 不能在一个块内定义同名的变量
    6. 本地变量不会被默认初始化
    7. 参数在进入函数的时候会初始化
  • 相关阅读:
    【Android Developers Training】 73. 布局变化的动画
    【Android Developers Training】 72. 缩放一个视图
    【Android Developers Training】 71. 显示翻牌动画
    svn更改地址怎么办
    python学习手册
    failed to bind pixmap to texture
    Ubuntu 12.04安装Google Chrome
    svn update 时总是提示 Password for '默认密钥' GNOME keyring: 输入密码
    重设SVN 的GNOME keyring [(null)] 的密码
    Nginx + uWSGI + web.py 搭建示例
  • 原文地址:https://www.cnblogs.com/mengd/p/11613873.html
Copyright © 2011-2022 走看看