C语言基础--函数和结构体

来源:互联网 发布:php 去除所有html标签 编辑:程序博客网 时间:2024/05/16 17:50
函数  
  
        具有特定功能的代码段叫做函数;简单地说函数就是一连串的语句组合在一起,实现某种功能,就取名代替这些语句。
      -----------------------------------------------------------------
   特点:
      1、都实现了某一种功能
      2、函数的使用可以省去重复的代码编写,大大简化程序,提高开发效率 
   ---------------------------------------
     从定义来看,函数可分为:
     1、库函数,系统提供好的函数,只需要使用时调用,不用关心函数的内部实现。
     2、自定义函数 程序员自己定义的函数。  
   ---------------------------------------    
     如何定义自己的函数:
     定义:返回值类型 函数名(形式参数列表)
          {语句;//代码片段     return返回值;}
    例:
       自定义数的和

       //编写函数int sumValue(int n):计算1n的和。

        int sumValue(int n){

            int sum = 0;

            for (int i =1; i <= n; i++) {

            sum = sum + i;

          }

         return sum ;

        }


        返回值类型:voidintcharfloat...
    返回值类型可以使基本数据类型,也可以是void空类型。

         特别注意:
               1当函数的返回值类型是void的时候,函数体内不需要return返回值;
      2 当函数返回值不是void的时候,体内需要return返回值,并且要与返回值类型要与函数定义时的返回值类型保持一致。
      3程序遇到return,就会跳出函数,不再往下执行,所以不要在return后写任何代码。
      4return的返回值可以使常量,也可以是变量,但类型一定要和函数返回值一致。
    --------------------------------------           
    形式参数列表
    概念:需要参与函数执行的一个变量       形式参数的定义没有个数限制,可以随便定义
    定义:基本数据类型 参数名
     多个形式参数之间用逗号隔开; 形式参数和函数返回值类型没有关系
    函数返回值的类型与return中返回值类型一致;
    -----------------------------------------     
函数分类  1、根据返回值和参数可以将函数划分为4
     有参数,有返回值       无参数,无返回值    有参数,无返回值    无参数,有返回值。
         分类如下各例:

     //无参数,无返回值

      void introduce(void){

          printf("大家好!我来自火星,我叫*****\n");

      }

    //有参数无返回值

      void num(int i)  //形式参数

      {

        printf("%d\n",i);

      }

    //有参数,有返回值

    int number(int age,float b ){

        printf("今年%d岁了\n",age);

        return age; 

    }


     //无参数,有返回值

      long lo(void){

         return321546887945;

      }

         形参,实参 形参,出现在函数定义中,以变量的名字来表示实际函数调用过程中需要提供的值
       实参出现在函数调用过程中的
       注意:函数调用中,形参会拷贝实参的内容。传递参数是给函数传递信息的方式
          ----------------------------------------------------------------------------
    关于函数的返回值
     1、函数返回的值被称为函数的值,并且只能通过return语句返回主调函数。
     2
、一个函数只能有一个返回值。
     3
、函数即使没有返回值,也可以使用return来结束函数的执行。
     4return后边的语句不会被执行
        ------------------------------------------------------------------------------
       严格上的函数包括三个部分:函数声明、函数定义、函数调用
        函数声明就是对函数的描述(实际就是给函数取个名字,后边加分号),没有具体的实现,后边加分号结尾。
   注意的两点
       1、函数定义出现在主调函数之前,函数声明可以省略。
       2、函数定义出现在主调函数之后,需要提前说明函数。 
    函数嵌套      函数的嵌套
       C语言中不允许嵌套定义,但可以嵌套调用        
       C语言中允许函数再次调用函数本身,这种调用方式成为递归调用,这个函数就叫做递归函数        
      警告:递归调用一定要有出口!!!!!!!!
       如下例

   //用递归求n

    // n! = n * (n - 1)!

    // n=1    //递归调用的出口;

    int fun(int n);

    int fun(int n)

    {

         if (n == 1) {

             return 1;     //跳出递归的条件

           }

     return n * fun(n -1);  //递归调用的公式

     }


   变量的作用域
     
变量的有效范围: 全局变量  局部变量
     
定义在函数体外的变量为全局变量
     
定义在函数体内的变量为局部变量
      全局变量和局部变量可以重名,但是在局部变量作用域内,只能访问局部变量。

结构体
 结构体:是一种自定义的数据类型。
 结构体声明;
    struct结构体名
    {
     类型说明符成员名;
      ....               //可以定义多个结构体成员
     类型说明符成员名;
    };
   格式如下:

   struct student1

   {

       int number;       //学号

       char name[20];   //姓名

       char sex;         //性别

       float score;      //成绩

        ……

   };

 
  
  结构体变量
   定义:有结构体修饰的变量叫做结构体变量
    struct结构体名变量名 = {初值}
结构体成员的访问
    结构体变量名.成员变量名
 typedef
        为现有的类型创建一个类型别名
      语法:typedef 原类型名 新类型名

       typedef struct student{

            char name[20];

            float score;

            int age;

        } Student;


 结构体数组
 将多个结构体变量放到数组中,构成结构体变量

        typedef  struct student{

            int num;

            char name[20];

            float score;

        }Student;

        Student stu[5] = {{1,"red", 92.5},{2,"green", 92},{3,"bluk", 89},{4,"black", 96},{5 ,"yellow", 90}};





0 0
原创粉丝点击