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语言不允许在函数内定义另一个函数,即不允许函数嵌套定义

  • 相关阅读:
    wget(转)
    852. Peak Index in a Mountain Array
    617. Merge Two Binary Trees
    814. Binary Tree Pruning
    657. Judge Route Circle
    861. Score After Flipping Matrix
    832. Flipping an Image
    461. Hamming Distance
    654. Maximum Binary Tree
    804. Unique Morse Code Words
  • 原文地址:https://www.cnblogs.com/marton/p/12312361.html
Copyright © 2011-2022 走看看