zoukankan      html  css  js  c++  java
  • C-函数

    C-函数

    函数概念

    对一段代码的封装,接收0或多个参数,执行封装的代码块,返回0或1个值

    函数定义

    调用函数

    函数名(参数列表)

    说明

    1)有参数时,需要给出正确的参数数量和顺序,这些值会按顺序赋值给函数内的参数

    2)没有参数时,参数列表为空

    栗子

     1 #include <stdio.h>
     2 
     3 //calculate the sum between begin and end
     4 int sum(int begin, int end){
     5     int i = 0;
     6     int sum = 0;
     7     for (i = begin; i <= end; i++) {
     8         sum += i;
     9     }
    10 
    11     return sum;
    12 }
    13 
    14 int main(void)
    15 {
    16     int begin = 5;
    17     int end = 10;
    18     int sums = sum(begin, end);
    19     printf("%d
    ", sums);
    20     return 0;
    21 }

    函数返回

    1)函数执行完成后,会返回到调用到它的地方

    2)return关键字用做从函数中返回值,return停止函数的运行,返回一个值,并回到调用它的位置,一个函数中可以出现多个return语句

    3)从函数返回的值可以赋值给变量,传递给函数,丢弃 

    4)没有返回值的函数,返回类型为void,不能使用带值的return或函数中没有return,调用时不能做返回值的赋值;

       有返回值的函数,必须使用带值的return

    函数的先后关系

    C语言的编译器是自上而下分析代码的

          V

    当在main函数中调用其他函数时,它需要知道这个函数的样子(函数名称,参数数量和类型,返回类型),

    这样它才能知道对这个函数的调用是否正确

          V

    如果你把这个函数放在main函数的下面,编译器就会报错

          V

    我们也可以通过函数原型让编译器知道我们函数的样子

    函数头,以分号结尾,构成函数的原型

    栗子

     1 #include <stdio.h>
     2 
     3 int sum(int begin, int end); //函数原型(声明)
     4 
     5 int main(void)
     6 {
     7     int begin = 5;
     8     int end = 10;
     9     int sums = sum(begin, end);
    10     printf("%d
    ", sums);
    11     return 0;
    12 }
    13 
    14 //calculate the sum between begin and end
    15 int sum(int begin, int end){ //定义
    16     int i = 0;
    17     int sum = 0;
    18     for (i = begin; i <= end; i++) {
    19         sum += i;
    20     }
    21 
    22     return sum;
    23 }

    参数传递

    C语言函数是按值传递的

    每个函数都有自己独立的变量空间,参数也位于这个独立的变量空间,和其他的函数没有关系

    下面我们通过一个栗子来说明

     1 #include <stdio.h>
     2 
     3 void swap(int x, int y){
     4     int t = x;
     5     x = y;
     6     y = t;
     7     printf("x=%d, y=%d
    ", x, y); //x=2, y=1
     8 }
     9 
    10 int main(void){
    11     int a = 1;
    12     int b = 2;
    13     swap(a, b);
    14     printf("a=%d, b=%d
    ", a, b); //a=1, b=2
    15 }

    本地变量

    函数每次运行时,都会产生一个独立的变量空间,在变量空间内定义的变量和函数的参数都称为本地变量

    变量的生存周期和作用域

    生存周期,从变量开始出现到变量消亡(大括号内)

    作用域,可以访问这个变量的范围(大括号内)

    本地变量的规则

    1)本地变量是定义在块内的

      它可以是定义在函数的块内

      也可以定义在语句的块内

      甚⾄可以随便拉⼀对⼤括号来定义变量

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

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

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

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

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

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

    注意

    1)函数fun()表明函数的参数未知,当在main函数中调用fun函数时,编译器会根据

      传入的参数来猜测函数的数量及类型,这可能会产生你不希望看到的结果;

      函数fun(void)表明函数不接收任何参数;

    2)C语言不允许在函数内定义另一个函数,即不允许函数嵌套定义

  • 相关阅读:
    php-基于面向对象的MySQL类
    php-迭代创建级联目录
    php-删除非空目录
    php-递归创建级联目录
    linux 用户管理
    mysql 语法大全
    dos命令下修改mysql密码的方法
    对 linux init.d的理解
    linux 重启服务器命令
    校验软件包
  • 原文地址:https://www.cnblogs.com/marton/p/12312361.html
Copyright © 2011-2022 走看看